c++ - boost线程库的型号是什么

标签 c++ multithreading boost pthreads boost-thread

c++ boost线程库使用的线程模型是什么?
1:1(内核级线程)
N:1(用户级线程)
M:N(混合线程)

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

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

最佳答案

它是 native 线程,即它会使用平台线程,至少在 Linux、Windows 和 Mac 中是这样。

据我所知,对于每个生成的线程,线程映射将与 Windows、Linux 和 MAC 中的内核线程成 1:1 比例。

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

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

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

关于c++ - boost线程库的型号是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540532/

相关文章:

c++ - 如何在C++中添加多个字符串

c++ - 如何在 new[] 的值初始化中使用变量

将操作系统线程限制在一个 CPU 上会很糟糕吗?

android - 从 iOS 中的 ([self performSelectorOnMainThread]) 等非 Activity 对象访问 UI-Thread

c++ - 使用 boost_foreach 遍历 unordered_map

boost 库路径包括

c++ - 使用 Automake 为 bin_SCRIPTS 中的每个文件应用命令

c# - 通过将可变大小的字符串传递给它来从 C# 调用 C++ 函数

Java 一个生产者和两个消费者

c++ - 使用 `boost::variant` 在不传递类型信息的情况下存储和检索值