2014-08-28 15 views
5

哪一个线程模型是C++ boost线程库的使用?
1:1 (Kernel-level threading)
N:1 (User-level threading)
M:N (Hybrid threading)什么是增强线程库的模型

这些模型(来自维基)的区别:http://en.wikipedia.org/wiki/Thread_(computing)#Models

我检查了升压网站,并没有关于它使用的线程模型提及。
我想这是一个1:1的,因为它没有提供类似的功能或yieldreschedule,但我不知道......

+0

用户级线程是否在boost协程中实现?也可能依赖于平台。 – 2014-08-28 04:14:07

+0

+1。这似乎是一个很好的问题......但我不确定我是否理解这个问题,那么请详细说明您提出的问题中提到的模型之间的区别?或者,给我们提供解释它们的链接。 – Nawaz 2014-08-28 04:16:22

+0

@Nawaz http://en.wikipedia.org/wiki/Thread_(computing)#Models – pgplus1628 2014-08-28 05:14:30

回答

1

据本地线程,即,它会使用的平台线程,至少在Linux,Windows和Mac中。

据我所知,线程映射将与Windows,Linux和MAC中的每个衍生线程的内核线程为1:1。

我不确定其他平台是否可以通过其他方式实现,但我不知道任何非内核线程实现与boost.thread API。

对于具有协作式多任务的用户级“线程”,可以使用boost.coroutine。还有即将推出的boost.fiber库,它与boost.coroutine几乎相同,但它增加了一个用户级的“线程”(这是库中术语中的一种光纤)API和用户级别的光纤调度程序。

  • 你可以找到boost.fiber here
  • 你可以找到boost.coroutine here
+1

thx为链接,很有帮助。有没有任何声明boost.thread使用平台线程的链接或代码? – pgplus1628 2014-08-28 05:29:03

+0

看看http://www.boost.org/doc/libs/1_56_0/doc/html/thread.html上的文档,你可以看到那里的所有配置宏。 – 2014-08-28 06:26:11