std :: promisevoid wirft einen unbekannten Fehler, es sei denn, man ruft sleep auf

8

Ich habe diesen Code:

%Vor%

Und nach dem Kompilieren mit gcc wird std::system_error :

geworfen %Vor%

Was komisch ist und vor dem Erstellen der Verheißung mit dem Zero-Second-Sleep hinzugefügt wird, verhindert die Ausnahme:

%Vor%

Ich probierte gcc 4.8.5 und 5.4.0, gleiche Ergebnisse. Warum verhält es sich so?

    
Tomasz Maciejewski 22.01.2018, 12:20
quelle

1 Antwort

9

Dieser Fehler kommt von Ihrer Kompilierung. Es sollte sein:

%Vor%

Die <thread> -Bibliothek benötigt dieses spezielle Flag -pthread , aber Sie haben -lpthread angegeben. Erstere kompilieren Ihre Übersetzungseinheit mit der vollständigen Thread-Unterstützung. Das Spätere verknüpft nur die Bibliothek, ohne die benötigten Makros und benötigten Werkzeuge zu definieren.

Auf coliru:

YSC 22.01.2018, 12:47
quelle

Tags und Links