C ++ 11线程实现后端

时间:2012-10-09 20:47:46

标签: c++ multithreading c++11 pthreads

  

可能重复:
  In g++ is C++ 11 thread model using pthreads in the background?

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

是否有人知道使用C++11PThreadsgcc中的任何其他多线程库实现了clang个线程?

1 个答案:

答案 0 :(得分:1)

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

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