Темы в g ++?

Возможный дубликат:
GCC std :: поток не найден в пространстве имен std

Я ожидал, что этот код скомпилируется в gcc, но это не так. Я использую Mingw 4.7.0. Я вижу заголовок, но классы, кажется, не существуют. Какие флаги мне нужны? я управлял этим с

g++ -std=gnu++11 main.cpp

Код

#include<atomic>
#include<thread>
#include<iostream>
using namespace std;
atomic<int> a1,a2,a3;

void test(){
cout<<"run";
}

int main(){
thread t(test);
t.join();
}

Ошибка, которую я получаю — поток не существует. В моем другом коде также написано, что std :: this_thread :: yield () не существует. MSVC11 компилирует это нормально

1

Решение

MingW-реализация GCC не является полной по отношению к C ++ 11. Вы можете либо: 1) подождать, 2) исправить это самостоятельно (с открытым исходным кодом!), Либо 3) использовать другой компилятор. GCC просто использует pthreads для реализации стандартной функциональности потоков библиотеки, а в Windows их нет.

В Linux вы должны скомпилировать g++ -std=c++11 -pthread заставить программу работать.


Это не единственный аспект MingW-порта GCC, который отсутствует. Еще один std::random_device, который пытается открыть /dev/urandom и предсказуемо терпит неудачу на Windows. По сути, кто-то должен переписать внутренности реализации с соответствующими примитивами Windows API, но я предполагаю, что этого еще никто не делал.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]