我通过MinGW在Windows上使用GCC 4.5.0和Eclipse IDE(如果这很重要)。
我正在使用-std=c++0x
标志。
我发现_GLIBCXX_HAS_GTHREADS
仍未定义,因此thread
对我来说仍然不是命名空间std
的成员。 - 或者也许是别的东西。
如何通过GCC获得C ++ 11线程支持?
P.S。它无法识别-pthread
标志。我在本网站的其他地方读到了一个问题,认为这是有效的。
编辑:愚蠢我:pthread
是一个库,不是一个选项。它已安装,gcc可以找到标题,但仍然没有雪茄。
答案 0 :(得分:10)
在Linux上运行良好(g++ -std=c++0x -lpthread
没有其他定义)。
但是,this thread on Cygwin mailing list表明,至少从4.4开始,在构建libstdc ++时,autoconf测试禁用了_GLIBCXX_HAS_GTHREADS,因为pgread实现的cygwin缺少pthread_mutex_timedlock。也许MinGW也有同样的问题。
此外,this thread on comp.lang.c++.moderated也说了同样的话。图书馆不支持。
答案 1 :(得分:3)
如何通过GCC获得C ++ 0x线程支持?
使用Boost?严重http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html声称即使在主线头中线程也不完整,因此它不会出现在任何当前版本中。
答案 2 :(得分:3)
gcc的本机Windows版本不支持新的C ++ 0x / C ++ 11线程库。
(商业)Just::Thread库增加了对Windows的gcc 4.5.2的TDM端口以及MSVC的支持。
答案 3 :(得分:3)
答案 4 :(得分:2)
已有一个轻量级的仅限头的库,它在纯win32 API中实现了std :: thread和sync基元: https://github.com/meganz/mingw-std-threads
IT应该适用于任何具有适当C ++ 11支持的MinGW版本。