在g ++中是在后台使用pthreads的C++ 11线程模型?

Rec*_*ker 14 c++ g++ pthreads c++11

我只是尝试着我的手g++ 4.6C++11功能.每次我使用-std=c++0xflag 编译一个简单的线程代码时,它都会因为分段错误而崩溃,或者只是抛出一些奇怪的异常.

我读了一些与C++11线程有关的问题,我意识到,我还需要使用-pthreadflag来正确编译代码.使用-pthread工作正常,我能够运行线程代码.

我的问题是,C++11多线程模型是否Pthreads在后台使用?还是从头开始写的?

我不知道是否有任何成员是gcc贡献者,但我只是好奇.

Chr*_*odd 22

如果你运行g++ -v它会给你一堆有关它如何配置的信息.其中一件事通常是一条看起来像的线

Thread model: posix
Run Code Online (Sandbox Code Playgroud)

这意味着它被配置为使用并行线程的线程库(的std ::线程的libstdc ++),并且这意味着你还需要使用可能需要为您的系统(在并行线程中的任何标志-pthread在Linux上).

这与标准没有任何关系,它只是g ++如何实现标准的细节

  • NB其中一件事_always_就是那条线,如果缺少线程支持,它会说"Thread model:single" (4认同)

Ant*_*hys 9

C++没有指定线程的实现方式.实际上,C++线程通常作为预先存在的系统线程库(如pthread或windows线程)上的瘦包装器实现.甚至还有一个使用std :: thread :: native_handle()访问底层线程对象的规定.

  • G ++不是一个unix编译器,它也适用于Windows,它可以配置为使用pthread-win32或本机Windows线程.到目前为止,还没有人为GCC完成其C++ 11线程库与Windows线程的工作,我发布了一些想法到http://gcc.gnu.org/ml/libstdc++/2012-05/msg00020.html (2认同)