我在Linux上使用C ++和boost。
根据工作类型确定线程优先级的最佳方法是什么? 是否可以在POSIX / pthread / Linux中改变线程优先级?
答案 0 :(得分:2)
据我所知,boost不提供API(C ++ 11标准至少也没有)。
在Linux上,您可以独立于其他线程nice
或setpriority
。但请注意,这是不 POSIX-conformant:
根据POSIX,漂亮的价值是每个进程设置。但是,在POSIX线程的当前Linux / NPTL实现下,nice值是每线程属性:同一进程中的不同线程可以具有不同的nice值。便携式应用程序应该避免依赖Linux行为,这可能会使标准符合未来。
由于Linux使用pthreads
(boost
的Linux端口也是如此),您还可以使用pthread_setschedparam
,其优点是比Linux特定的每线程更具可移植性nice
行为。
在这两种情况下,由于不得不求助于系统设施来管理所谓的“不透明”boost
(或C ++ 11中的std
)资源,所以会有轻微的不安,所以要谨慎行事(与任何特定于实现的内容一样)。