2010-01-26 108 views
2

Windows操作系统定义了下面的常量作为线程优先级:Windows和Linux线程优先级等价

  • THREAD_PRIORITY_IDLE(-15)
  • THREAD_PRIORITY_LOWEST(-2)
  • THREAD_PRIORITY_BELOW_NORMAL(-1)
  • THREAD_PRIORITY_NORMAL (0)
  • THREAD_PRIORITY_ABOVE_NORMAL(1)
  • THREAD_PRIORITY_HIGHEST(2)
  • THREAD_PRIORITY_TIME_CRITICAL(15)

而Linux已sched_get_priority_max()和sched_get_priority_min()来获取线程的优先级范围。

是否可以在Windows和Linux线程优先级值之间进行等价处理?

回答

1

我用:

sched_get_priority_max(policy); 
    sched_get_priority_min(policy); 

知道的优先范围。

4

默认Linux优先级范围介于-20(最高)和20(空闲)之间,步长为1,默认值为0.负向(升高)优先级只能由超级用户分配。注意Linux从未声称-20是Realtime/Time Critical,而RTLinux使用单独的方法来实现Realtime。另请注意,在Linux内核空间中,这些优先级具有不同的范围。 -20:20是一个严格的用户空间事物。