GCC std:: thread не найден в пространстве имен std

Я использую GCC 4.5.0 с Eclipse IDE (если это имеет значение) в Windows через MinGW.

Я использую флаг -std=c++0x.

Я обнаружил, что _GLIBCXX_HAS_GTHREADS еще не определен, поэтому thread для меня все еще не является членом пространства имен std. - или, возможно, это что-то еще.

Что нужно сделать, чтобы получить поддержку потоков С++ 11 с помощью GCC?

P.S. Он не распознает флаг -pthread. Я читал в другом месте на этом сайте, что это работает.

Edit: Stupid me: pthread - это библиотека, а не опция. Он установлен, gcc может найти заголовок, но все равно не сигару.

Ответы

Ответ 1

Прекрасно работает в Linux (g++ -std=c++0x -lpthread без дополнительных опций).

Однако этот поток в списке рассылки Cygwin предполагает, что, по крайней мере, с 4.4, _GLIBCXX_HAS_GTHREADS был отключен с помощью теста autoconf при создании libstdС++, потому что В реализации pthread cygwin отсутствует pthread_mutex_timedlock. Возможно, MinGW имеет ту же проблему.

Кроме того, этот поток на comp.lang.С++. moderated говорит то же самое. Не поддерживается библиотекой.

Ответ 2

Что нужно сделать, чтобы получить поддержку потоковой передачи С++ 0x с помощью GCC?

Использовать Boost? Серьезно http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html утверждает, что нити не завершены даже в головке mainline, поэтому он не будет в любой текущей версии.

Ответ 4

Встроенные сборки Windows из gcc не поддерживают новую библиотеку потоков С++ 0x/С++ 11.

(коммерческая) Just:: Thread добавляет поддержку порта TDM gcc 4.5.2 для Windows, а также MSVC.

Ответ 5

Существует уже легкая библиотека только для заголовка, которая реализует примитивы std:: thread и sync в чистом API win32: https://github.com/meganz/mingw-std-threads

ИТ должен работать с любой версией MinGW, которая имеет соответствующую поддержку С++ 11.