【问题标题】:What is the model of boost threading libraryboost线程库的模型是什么
【发布时间】:2014-10-21 19:52:01
【问题描述】:

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

我查看了 boost 站点,它没有提到它使用的线程模型。
我猜是 1:1,因为它不提供 yieldreschedule 之类的功能,但我不确定...

【问题讨论】:

  • 用户级线程在boost协程中实现?也可能取决于平台。
  • +1。这似乎是一个好问题......但我不确定我是否理解它,所以请详细说明您的问题中提到的模型之间的差异?或者,向我们提供解释它们的链接。
  • @BryanChen 所以 boost.thread 是 1:1 吗?

标签: c++ multithreading boost pthreads boost-thread


【解决方案1】:

是原生线程,即会使用平台线程,至少在Linux、Windows和Mac中。

据我所知,线程映射将是 1:1,每个衍生线程在 Windows、Linux 和 MAC 中都有一个内核线程。

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

对于协作多任务的用户级“线程”,可以使用 boost.coroutine。还有即将推出的 boost.fiber 库,它几乎类似于 boost.coroutine,但它添加了一个用户级“线程”(这是库术语中的一个 Fiber)API 和一个用户级 Fiber 调度程序。

  • 您可以找到 boost.fiber here
  • 你可以找到 boost.coroutine here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2013-02-12
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
相关资源
最近更新 更多