проблемы с использованием потоков в C ++ на Windows 10 (с использованием G ++ в качестве компилятора) - PullRequest
4 голосов
/ 11 мая 2019

Я пытаюсь создать поток и заставить его напечатать что-то в терминал. У меня возникли некоторые проблемы, поэтому я решил взять этот очень простой кусок кода, который сделал кто-то другой, когда я его компилирую, я получаю ошибки, перечисленные ниже, но другие люди в сети, похоже, не испытывают проблем с запуском этого.

#include <iostream>
#include <thread>

using namespace std;

void hello_world()
{
    cout << "Hello from thread!\n";
}

int main()
{
    thread threadobj1(hello_world);
    threadobj1.join();
    return 0;
}

Компилятор (mingw32-gcc-g ++ - bin 8.2.0.3 в windows 10) выдает следующие ошибки:

.\multiT.cpp: In function 'int main()':
.\multiT.cpp:13:5: error: 'thread' was not declared in this scope
     thread threadobj1(hello_world);
     ^~~~~~
.\multiT.cpp:13:5: note: 'std::thread' is defined in header '<thread>'; did you forget to '#include <thread>'?.\multiT.cpp:3:1:
+#include <thread>

.\multiT.cpp:13:5:
     thread threadobj1(hello_world);
     ^~~~~~
.\multiT.cpp:14:5: error: 'threadobj1' was not declared in this scope
     threadobj1.join();
     ^~~~~~~~~~
.\multiT.cpp:14:5: note: suggested alternative: 'thread_local'
     threadobj1.join();
     ^~~~~~~~~~
     thread_local

Я надеялся, что кто-то сможет помочь мне понять, почему это не работает для меня, ошибка говорит о том, что я должен включить, но я явно уже сделал это, поэтому я немного растерялся. Я уже пытался установить пакеты "mingw32-pthreads-w32-dev", поскольку они не были установлены, но это не имело никакого значения. Я также добавил следующие аргументы в компилятор:

g++ -std=c++14 -pthread .\multiT.cpp

1 Ответ

1 голос
/ 12 мая 2019

Для всех, кто имеет дело с этой проблемой: Самое простое решение - загрузить mingw-64 и использовать вместо этого их компилятор.

Затем используйте аргументы -std=gnu++11 или -std=c++11, чтобы включить поддержку стандарта ISO C ++ 2011 и поддержку расширений для потоков (обратите внимание: эта поддержка в настоящее время является экспериментальной, хотя пока это не доставляло мне никаких проблем) .

...