标签: linux multithreading c++11 pthreads
我读到pthread是C库,与C ++对象模型不兼容,特别是在讨论异常处理时。
所以我希望在linux系统上知道gcc / clang如何实现std::thread,它是否调用了一些linux本机函数/内核api或其他东西?
std::thread
此外,std::thread_local如何实施,与__thread相关?
std::thread_local
__thread
答案 0 :(得分:-1)
在编译器输出上使用ldd myExecutable来查找。
ldd myExecutable
libstdc ++和libc ++显然都使用pthread,但不要求它们这样做。可以在native_handle方法文档here和here中找到它的证据。文件说:
访问* this的原生句柄。 此函数的结果的含义和类型是实现定义的。在POSIX系统上,这可能是pthread_cond_t *类型的值。在Windows系统上,这可能是PCONDITION_VARIABLE。
访问* this的原生句柄。
此函数的结果的含义和类型是实现定义的。在POSIX系统上,这可能是pthread_cond_t *类型的值。在Windows系统上,这可能是PCONDITION_VARIABLE。
和
返回实现定义的底层线程句柄。