C ++ Многопоточность с MinGW - PullRequest
1 голос
/ 24 июня 2019

Я бы хотел поэкспериментировать с многопоточностью с с ++.Я использую MinGW g ++ компилятор (версия 8.2.0) в Windows 10. Когда я пытаюсь использовать встроенную библиотеку потоков с c ++, используя код, полученный непосредственно с веб-сайта, я получаю сообщение об ошибке:

main.cpp: 34: 5: ошибка: «поток» не был объявлен в этой области потока th1 (foo, 3);^ ~~~~~ main.cpp: 34: 5: примечание: 'std :: thread' определено в заголовке '';Вы забыли "#include"?main.cpp: 5: 1: + # включить использование пространства имен std;main.cpp: 34: 5: поток th1 (foo, 3);^ ~~~~~ main.cpp: 38: 11: ошибка: ожидается ';'до 'th2' поток th2 (thread_obj (), 3);^ ~~~;main.cpp: 49: 11: ошибка: ожидается ';'до th3 резьба th3 (f, 3);^ ~~~;main.cpp: 53: 5: ошибка: 'th1' не был объявлен в этой области th1.join ();^ ~~ main.cpp: 56: 5: ошибка: 'th2' не было объявлено в этой области th2.join ();^ ~~ main.cpp: 59: 5: ошибка: 'th3' не было объявлено в этой области th3.join ();^ ~~

Это проблема с моим специфическим для моего компилятором или MinGW просто не допускает стандартную библиотеку потоков?Если нет, то какую библиотеку лучше использовать вместо?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Вы можете либо:

  • Выберите параметр «pthreads» при установке mingw-w64 или
  • Выберите опцию «Win32 threads» при установке mingw-w64 и установите дополнительный пакет заголовочных файлов.

Другим хорошим вариантом является установка через MSYS2 , которая всегда дает вам последнюю сборку с подходящей конфигурацией. (в этом случае).

См. в этой теме для получения дополнительной информации, если вы не хотите использовать MSYS2.

0 голосов
/ 25 июня 2019

Когда вы загружаете mingw, существует версия win32 и версия POSIX. Получите POSIX, и он придет с реализацией std :: thread.

...