在命名空间std中找不到GCC std :: thread

时间:2010-08-05 12:56:09

标签: c++ multithreading gcc c++11

我通过MinGW在Windows上使用GCC 4.5.0和Eclipse IDE(如果这很重要)。

我正在使用-std=c++0x标志。

我发现_GLIBCXX_HAS_GTHREADS仍未定义,因此thread对我来说仍然不是命名空间std的成员。 - 或者也许是别的东西。

如何通过GCC获得C ++ 11线程支持?

P.S。它无法识别-pthread标志。我在本网站的其他地方读到了一个问题,认为这是有效的。

编辑:愚蠢我:pthread是一个库,不是一个选项。它已安装,gcc可以找到标题,但仍然没有雪茄。

5 个答案:

答案 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版本。