在我的 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;