C プログラムの非同期コンソール入力
プログラムの継続実行中にユーザー コマンドを処理するには、ノンブロッキング コンソール入力が不可欠です。 C では、これを実現するためのさまざまなアプローチがあります。
C 11 ソリューション
C 11 を使用する効果的な方法の 1 つは、std::thread と<code class="hljs">std::future ライブラリ。以下に例を示します。
<code class="cpp">#include <iostream> #include <future> #include <thread> #include <chrono> static 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>
この例では、std::thread ライブラリを使用して、メイン スレッドが実行を継続している間に入力を処理する別のスレッドを作成します。 <code class="hljs">std::future ライブラリは、別のスレッドから入力を非同期的に取得するために使用されます。
このアプローチにより、プログラムは同時にユーザー コマンドを処理しながら情報を出力できるようになり、応答性の高いノンブロッキング ユーザー インターフェイスが提供されます。 .
以上がC プログラムはどのようにして非同期コンソール入力を実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。