C ++ 11:linux上的std :: thread取决于pthread库吗?

时间:2017-08-11 10:16:58

标签: linux multithreading c++11 pthreads

我读到pthread是C库,与C ++对象模型不兼容,特别是在讨论异常处理时。

所以我希望在linux系统上知道gcc / clang如何实现std::thread,它是否调用了一些linux本机函数/内核api或其他东西?

此外,std::thread_local如何实施,与__thread相关?

1 个答案:

答案 0 :(得分:-1)

在编译器输出上使用ldd myExecutable来查找。

libstdc ++和libc ++显然都使用pthread,但不要求它们这样做。可以在native_handle方法文档herehere中找到它的证据。文件说:

  

访问* this的原生句柄。

     

此函数的结果的含义和类型是实现定义的。在POSIX系统上,这可能是pthread_cond_t *类型的值。在Windows系统上,这可能是PCONDITION_VARIABLE。

  

返回实现定义的底层线程句柄。