C++ & boost::threads - 如何根据工作类型确定线程的优先级?

C++ & boost::threads - How to prioritize thread based on work type?

本文关键字:类型 线程 优先级 工作 boost threads 何根 C++      更新时间:2023-10-16

我在Linux上使用带有boost的C++。

根据工作类型确定线程优先级的最佳方法是什么?是否可以在POSIX/pthread/Linux中改变线程优先级?

据我所知,boost 没有提供 API 来做到这一点(C++11 标准肯定至少没有)。

在 Linux 上,您可以独立于其他线程nicesetpriority每个线程。但请注意,这不符合 POSIX 标准:

根据 POSIX 的说法,不错的值是每个进程的设置。但是,在当前 POSIX 线程的 Linux/NPTL 实现下,nice 值是每个线程属性:同一进程中的不同线程可以具有不同的 nice 值。可移植应用程序应避免依赖 Linux 行为,这些行为将来可能会使标准符合。

由于Linux使用pthreads(Linux端口boost也是如此),你也可以使用pthread_setschedparam它的优点是比Linux特定的每线程nice行为更具可移植性。

在这两种情况下,由于不得不求助于系统设施来管理所谓的"不透明"boost(或C++11)资源的std,因此请谨慎行事(与任何特定于实现的内容一样)。