Nicht blockierende Konsoleneingabe in C
Eine häufige Anforderung bei der Programmierung ist die Verarbeitung von Benutzerbefehlen, während ein Programm kontinuierlich ausgeführt wird und Informationen ausgibt. Herkömmliche Konsoleneingabemethoden in C blockieren die Ausführung des Programms, bis der Benutzer die Eingabetaste drückt. Für eine nicht blockierende Eingabe benötigen Sie jedoch einen alternativen Ansatz.
Lösung: Parallelität
C 11 führt die Bibliotheken std::async und std::future für Parallelität ein. Dadurch können Sie einen separaten Thread für nicht blockierende Eingaben erstellen, ohne das Hauptprogramm anzuhalten.
Implementierung
Der bereitgestellte Code demonstriert nicht blockierende Konsoleneingaben:
<code class="cpp">#include <iostream> #include <future> #include <thread> #include <chrono> std::string getAnswer() { std::string answer; std::cin >> answer; return answer; } int main() { std::chrono::seconds timeout(5); std::cout << "Do you even lift?" << std::endl << std::flush; std::string answer = "maybe"; //default to maybe std::future<std::string> future = std::async(getAnswer); if (future.wait_for(timeout) == std::future_status::ready) answer = future.get(); std::cout << "the answer was: " << answer << std::endl; exit(0); }</code>
In diesem Code:
Das obige ist der detaillierte Inhalt vonWie implementiert man nicht blockierende Konsoleneingaben in C mithilfe von Parallelität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!