c++ - 实现线程作为库

标签 c++ multithreading boost x86

我读过: “Threads Cannot Be Implemented As a library”(http://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf)我同意那篇文章的主要思想。但是,我有疑问:毕竟,在 C++ 模型 (C++11) 之前,没有对线程的原生支持。但是,Boost 能够提供一个线程作为库。那么,这怎么可能/我误解了什么?

最佳答案

尽管信息仍然相关,但那篇论文有点过时了。从那时起,C++11 引入了几个更新来解决这些问题。特别是,C++11 为处理多线程程序添加了定义更明确的内存模型。这类似于论文中描述的 Java。 C++11 还巩固了 sequence points 的概念,现在称为“排序”,添加了自己的线程库(基于来自 boost 的线程库),并添加了一个原子库,其中包括几个用于处理无锁算法的工具。

因此,C++ 委员会在多线程环境中的行为方面改进了 C++ 语言的规范。而且,他们已经明确定义了一组最小的内存模型期望。

它并不完美,但我们比以前好多了。

我会推荐的信息:

  • Anthony Williams 的书:“C++ Concurrency In Action”
  • Herb Sutter 的“Atomic Weapons”演讲。

关于c++ - 实现线程作为库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38666757/

相关文章:

java - Thread.sleep() 没有暂停执行

c++ - 将带有时间戳的 vector 整数连接为 C++ 中的字符串?

windows - Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

C++ Boost io 流,错误处理

c++ - 递归反转堆栈

c++ - 什么是 !!在下面的宏中?

c++ - C++ 中的类问题

python - asyncore 回调启动线程...可以吗?

Java 在两个类之间传递值

c++ - 奇怪的段错误