用户空间线程库

时间:2013-03-10 19:43:22

标签: c++ multithreading scheduling preemptive

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

C ++ 11标准库具有线程支持,认为它依赖于Linux上的pthreads。 您也可以直接使用pthreads(它在C中实现)。如果你想要便携的话 - Qt有很好的线程支持。

答案 2 :(得分:0)

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