MinGW i std :: thread

Próbowałem więc skompilować i uruchomić następujący kod w systemie Windows przy użyciu kompilatora MinGW.

#include <iostream>
#include <thread>

void test()
{
    std::cout << "test" << std::endl;
}

int main()
{
    std::thread t(test);
}

Kompiluję za pomocą następującego polecenia:

g++ -std=c++11 test.cpp -o test.exe

Teraz problemem jest wersja MinGW, której należy użyć i wypróbowałem wszystkie znane mi wersje.

Kompilacje MinGW:wątek-win32Kompilacje MinGW:wątek-posixMinGW-w64:stdthread experimental rubenvbMinGW-w64:stdthread experimental rubenvb 4.7

Numer 1 nie działa, ponieważ GCCnajwyraźniej tylko wspiera pthread rzeczy wewnętrznie.

Numer 2 się kompiluje i generuje nawet dane wyjściowetest (zobacz ostatnią linię wyjścia), ale także zawiesza się z błędem:

terminate called without an active exception

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
test

Numer 3 i 4 ponownie się kompilują, ale nie są wyświetlanetest i zamiast tego natychmiast ulega awarii, ale z bardziej opisowym wyjściem:

terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Google przywiózł mnie oczywiście doŚledzenie błędów GCC i kilka innych postów, które sugerowały użycie-pthread, co wcale nie pomaga.

Próbowałem również ręcznie linkowaćwinpthread ipthread, ale to też nic nie robi.

Nie ma też różnicy między nimi-std=c++11 i-std=gnu++11...

Jestem teraz naprawdę zagubiony i nie wiem, czy w ogóle można uzyskać wersję MinGW, która obsługujestd::thread, ale może po prostu pomijam niektóre flagi kompilatora. Mam nadzieję, że ktoś może mi pomóc!

questionAnswers(2)

yourAnswerToTheQuestion