我想知道哪些用户空间线程库(用于标准c++)是可用的,这些库允许对应用程序级抢占式调度进行细粒度控制。目标平台是POSIX,但是有一个跨平台的解决方案会特别好。
如果设置线程优先级足够,可以使用pthreads: How to increase thread priority in pthreads?如果您希望能够手动调度,那么您应该使用协作线程,如跳远或http://www.gnu.org/software/pth/pth-manual.html。要使用多个处理器,您需要内核线程,可以通过pthreads或OpenMP获得。
基本上,最初应该生成几个内核线程,固定它们,并在内核线程之上运行额外的协作线程。请注意,协作线程是非抢占性的,除非您使用计时器事件实现抢占,但是内核线程将被抢占。一些协作线程方案在c++中不能很好地工作,特别是它们可能在切换时调用堆栈上变量的析构函数。
便携式运行时系统具有可定制的用户空间抢占式调度,但使用c语言编写。
c++ 11标准库具有线程支持,尽管它依赖于Linux上的pthreads。你也可以直接使用pthreads(它是在C中实现的)。如果你想要一些可移植的东西- Qt有很好的线程支持。