0

可能重复:
在 g++ 中,C++ 11 线程模型在后台使用 pthreads 吗?

我从某个地方读到了在 Linux 系统OpenMP中使用的实现PThreads,尽管它们对我来说似乎完全不同。C++11考虑到线程之间的(相对)相似性,PThreads我想知道,

有谁知道线程是否C++11使用PThreadsor 中的任何其他多线程库实现gccclang

4

1 回答 1

1

C++ 2011 多线程有多个部分:

  1. 更高级别的抽象,如std::threadstd::mutexstd::condition_variable等。这些抽象是根据 libc++(clang 的本机库)和 libstdc++(gcc 的本机库)的 pthread 实现的。libstdc++ 使用间接(gthr.h),它可用于,例如,为单线程实现存根。从不同同步类的来源来看,这一点非常明显。
  2. pthreads 不提供较低级别的同步工具,即原子和各种内存可见性控制。似乎 gcc 和 clang 都使用编译器内置函数来实现这些,这可能会创建合适的指令。但是,我还没有找到其中任何一个的实际代码。
  3. 在库中实现东西是不够的:需要防止编译器跨同步原语重新排序指令,并且需要使值在适当的位置可见。
于 2012-10-09T21:12:30.827 回答