1

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

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

4

1 回答 1

2

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

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

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

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

在这两种情况下,由于不得不求助于系统设施来管理所谓的“不透明” boost(或std在 C++11 中)资源,所以会有些不安,所以要小心行事(就像任何特定于实现的东西一样)。

于 2013-10-26T21:02:31.090 回答