C ++中的OS独立线程?

时间:2010-12-18 03:56:39

标签: c++ c multithreading

是否可以在C / C ++中实现用户级线程(ULT)的OS独立线程模型?换句话说,我们可以在逻辑上将进程分解为ULT并动态地在它们之间进行切换吗?

6 个答案:

答案 0 :(得分:5)

Boost.Thread为跨平台线程提供了大量的抽象。

答案 1 :(得分:3)

只需使用POSIX线程。如果您需要支持Windows,那么Windows的实现是合理的。

答案 2 :(得分:1)

OpenMP是处理许多常见用例的线程的好方法。

答案 3 :(得分:1)

在C中,一个可移植的(它需要POSIX)用户级线程库是GNU Pth。它使用协作而不是抢占,并在用户空间中实现每线程堆栈和其他结构。正如所料,这将 not 提供与OS级线程相同的性能特征。但是,它确实提供了一些相同的抽象。

答案 4 :(得分:1)

在Windows 7上,有一种方法可以实现您自己的用户模式调度程序: http://msdn.microsoft.com/en-us/library/dd627187%28v=vs.85%29.aspx

这基本上是使用用户模式调度程序创建用户模式线程的API,最好的事情是打开进程资源管理器并查看内核时间0。

Hwever我知道成功实施UMS的人,但微软在api上报告了一些错误。 。

答案 5 :(得分:1)

你可以看看ZThread是一个跨平台的c ++库。

在c ++ vol 2中思考使用此库来解释多线程应用程序。