C のノンブロッキング コンソール入力
最新の C では、ノンブロッキング コンソール入力により、プログラム中にユーザー コマンドをシームレスに処理できます。は実行を続けて情報を出力します。この機能は、インタラクティブなアプリケーションやゲームで重要になることがよくあります。
C 11 解決策:
ノンブロッキング コンソール入力を実装する効果的な方法の 1 つは、別個のコンソール入力を使用することです。糸。このアプローチにより、バックグラウンド スレッドがコンソールへの入力を監視している間、メイン プログラムの実行を継続できます。次のコード サンプルは、C 11 を使用したこのアプローチを示しています。
<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>
説明:
この例では、getAnswer 関数がユーザーの入力を取得します。 std::async 関数は、getAnswer を実行する別のスレッドを起動し、結果の取得に使用できる std::future オブジェクトを返します。
メイン プログラムは、ユーザー入力を待機するタイムアウトを 5 秒に設定します。 。ユーザーがこの時間内に入力を入力すると、プログラムは応答変数を入力に設定します。それ以外の場合は、デフォルトで「maybe」になります。
このノンブロッキング入力アプローチにより、プログラムはユーザー入力に効率的に応答しながら、進行中の計算と出力を継続できます。これは、インタラクティブな C アプリケーションを構築するための強力なテクニックです。
以上がインタラクティブなアプリケーション向けにノンブロッキングのコンソール入力を C で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。