哪个是c ++ boost线程库使用的线程模型?
1:1 (Kernel-level threading)
N:1 (User-level threading)
M:N (Hybrid threading)
这些模型之间的差异(来自wiki):http://en.wikipedia.org/wiki/Thread_(computing)#Models
我检查了提升网站,并没有提及它使用的线程模型
我想它是1:1,因为它不提供yield
或reschedule
等功能,但我不确定......
答案 0 :(得分:1)
它是本机线程,即它将使用平台线程,至少在Linux,Windows和Mac中。
据我所知,线程映射将是1:1,每个产生的线程在Windows,Linux和MAC中都有一个内核线程。
我不确定是否可以通过其他方式实现其他平台,但我不知道使用boost.thread API进行任何非内核线程实现。
对于用户级"线程",通过协作式多任务处理,可以使用boost.coroutine。还有即将推出的boost.fiber库,它几乎就像boost.coroutine,但它增加了一个用户级"线程" (这是库术语中的光纤)API和用户级光纤调度程序。