Traté de probar un ejemplo de C + + 11 hilos en Eclipse. Pero me dio este mensaje al ejecutar el programa:¿Cómo hacer que CDT/Eclipse funcione con C + + 11 hilos?
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted'
Mi sistema: ubuntu + gcc 4.7 Programa
:
#include <iostream>
#include <thread>
void worker()
{
std::cout << "hello from worker" << std::endl;
}
int main(int argc, char **argv)
{
std::thread t(worker);
t.join();
}
... y sí, puse -std=c++11
y -pthread
dentro C/C++ Build -> Settings -> Tool Settings -> Cross G++ Compiler -> Miscellaneous -> Other Flags
.
¿Algún comentario?
Parece extraño poner esas configuraciones en una sección de "compilador cruzado" (pero no conozco Eclipse). El bloqueo es repetible si el indicador '-pthread' no está presente en la línea de comando y tiene otras versiones de libstdC++ instaladas. Por lo tanto, asegúrese de que esa bandera realmente se pase a su compilador – Mat
Esta es una excepción de tiempo de ejecución, por lo que el código se compila correctamente. Todavía no entiendo en qué casos debería ocurrir este mensaje de excepción ... – Klaim
@Klaim: ese error aparece si enlaza con el libstdC++ incorrecto, lo que puede suceder si tiene múltiples versiones instaladas y no pasa '- pthread' (o la instalación de GCC está borrosa) – Mat