0

我想知道哪些用户空间线程库(用于标准 C++)允许对应用程序级别的抢占式调度进行细粒度控制。目标平台是 POSIX,但拥有跨平台解决方案会特别好。

4

3 回答 3

2

如果设置线程的优先级就足够了,可以使用 pthreads:How to increase thread priority in pthreads? . 如果您希望能够手动调度,那么您应该使用协作线程,例如 longjump 或http://www.gnu.org/software/pth/pth-manual.html。要使用多个处理器,您将需要内核线程,您可以通过 pthreads 或 OpenMP 获得这些线程。

基本上,您最初应该生成几个内核线程,固定它们,然后在内核线程之上运行额外的协作线程。请注意,除非您使用计时器事件实现抢占,否则协作线程是非抢占的,但内核线程将被抢占。一些协作线程方案不适用于 C++,特别是它们在切换时可能会调用堆栈上的变量的析构函数。

于 2013-03-10T23:06:20.883 回答
0

C++11 标准库支持线程,认为它依赖于 Linux 上的 pthreads。您也可以直接使用 pthreads(它是用 C 实现的)。如果你想要一些可移植的东西——Qt 有很好的线程支持。

于 2013-03-10T19:59:28.313 回答
0

Portable Runtime System具有可定制的用户空间抢占式调度,但是是用 C 编写的。

于 2016-11-17T20:51:16.693 回答