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, поэтому он не будет в любой текущей версии.
Ответ 3
Используйте это builts of mingw: http://code.google.com/p/mingw-builds/downloads/list
Ответ 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.