2016-05-03 9 views
0

Ich schreibe eine Multithread-Konsole-Anwendung in C++ 11. Ich würde es lieben, OS unabhängig zu sein, aber ich bin auf einer Linux-Maschine.Multithread-Konsole-Anwendung: Pause bei Tastendruck ohne busy Warten

Ich möchte in der Lage sein, Threads nach einem Tastendruck zu pausieren, aber damit das Programm auch ohne Tastendruck beendet und beendet werden kann. Momentan ist mein Pseudocode für meinen Hauptthread der folgende.

while other threads are executing 
    sleep for 1 second 
    if keypress 
    *do stuff* 
    end if 
end while 

Es ist also so etwas wie ein busywait. Ich habe mich gefragt, ob es einen besseren Weg dafür gibt.

Antwort

-3

Eine Möglichkeit, dies zu erreichen (auch plattformübergreifend), ist die Verwendung von libSDLs, SDL_KeyboardEvent.

+0

Können Sie das etwas mehr ausdrücken? Wie benutzt man das um einen Thread aufzuwecken? – RghtHndSd

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/12229849) –

+0

@IgorIvancha: Sorry, wenn ich dicht bin, aber ich sehe nicht, wie der Link die Frage beantwortet. Wie benutzt man das, um einen schlafenden Faden aufzuwecken? – RghtHndSd