是否可以在C / C ++中实现用户级线程(ULT)的OS独立线程模型?换句话说,我们可以在逻辑上将进程分解为ULT并动态地在它们之间进行切换吗?
答案 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中思考使用此库来解释多线程应用程序。