1

在我的 Delphi Linux 应用程序中,我喜欢将线程优先级设置为“tpTimeCritical”。不幸的是,优先级值无法更改。每个值 <> 0 都会引发运行时错误 217。

我发现在 Linux 上必须先更改策略(SCHED_FIFO 或 SCHED_RR)。在 sched.h 我有以下值:

#define SCHED_NORMAL    0
#define SCHED_FIFO      1
#define SCHED_RR        2
#define SCHED_BATCH     3
#define SCHED_IDLE      5
#define SCHED_DEADLINE  6

正确设置策略后,应将优先级设置为 1 到 99 之间的值。不幸的是,这不起作用。

constructor TMyThread.Create;
begin
   inherited Create(True);

   Policy   := 1;
   Priority := 90;
end;
4

1 回答 1

1

在我对 Embarcadero (RSP-26280) 进行了调查之后,结果证明这是相应的 Linux 线程实现中的一个错误。该错误已于 2020 年 6 月修复,该修复已包含在下一个正式版本中(我认为是 10.4)。

于 2021-03-03T19:55:49.293 回答