Windows和Linux线程优先级等价
问题描述:
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线程优先级值之间进行等价处理?
答
我用:
sched_get_priority_max(policy);
sched_get_priority_min(policy);
知道的优先范围。
答
默认Linux优先级范围介于-20(最高)和20(空闲)之间,步长为1,默认值为0.负向(升高)优先级只能由超级用户分配。注意Linux从未声称-20是Realtime/Time Critical,而RTLinux使用单独的方法来实现Realtime。另请注意,在Linux内核空间中,这些优先级具有不同的范围。 -20:20是一个严格的用户空间事物。