Quindi ho cercato di ottenere il seguente codice per compilare ed eseguire su Windows utilizzando un compilatore MinGW.MinGW e std :: thread
#include <iostream>
#include <thread>
void test()
{
std::cout << "test" << std::endl;
}
int main()
{
std::thread t(test);
}
Sto compilando con il seguente comando:
g++ -std=c++11 test.cpp -o test.exe
Ora il problema è la versione di MinGW si dovrebbe usare e ho provato su tutte le versioni che conosco.
- MinGW-costruisce: thread-win32
- MinGW-build: thread-posix
- MinGW-W64: stdthread experimental rubenvb
- MinGW-W64: stdthread experimental rubenvb 4.7
numero 1 non funziona, dal momento che GCC apparently only supports roba pthread internamente.
Numero 2 si compila ed essenzialmente anche emette test
(vedere l'ultima riga dell'output), ma si blocca anche con l'errore:
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
numero 3 e 4 nuovamente do compilare, ma don 't uscita test
e invece immediatamente si blocca, ma con un output più descrittivo:
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 mi ha portato, naturalmente, per i GCC bug tracker e alcuni altri posti, che ha suggerito di utilizzare -pthread
, che non aiuta affatto
Ho anche provato il collegamento manuale con winpthread
e pthread
, ma anche questo non fa nulla.
C'è anche alcuna differenza tra -std=c++11
e -std=gnu++11
...
Sono davvero perso in questo momento e non so, se è a tutto il possibile per ottenere una versione MinGW, che supporta std::thread
, ma forse sto solo guardando alcune bandiere del compilatore. Spero che qualcuno là fuori possa aiutarmi!
Ore trascorse per trovare una soluzione, finalmente il punto 2 ha funzionato! Grazie! – Massimo