2013-03-10 90 views
0

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

+1

什么是“对应用程序级的抢占式调度细粒度的控制”是什么意思?什么样的控制,如何/何时?假设标准的'pthreads'不够好,你需要什么? – 2013-03-10 20:02:04

+0

我想实现应用程序级调度 - 所以我希望能够使线程(可能正在等待互斥体)进入睡眠状态,并在稍后唤醒它们(并恢复它们的状态)并设置优先级。 – lorefnon 2013-03-10 20:21:40

+0

如果有这样一个图书馆,我不会感到惊讶,但我不知道其中之一。 – 2013-03-10 20:24:08

回答

0

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

2

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

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