C でのノンブロッキング コンソール入力
プログラミングにおける一般的な要件は、プログラムが継続的に実行され情報を出力している間にユーザー コマンドを処理することです。 C の従来のコンソール入力メソッドは、ユーザーが Enter キーを押すまでプログラムの実行をブロックしますが、ブロックしない入力の場合は、別のアプローチが必要です。
解決策: 同時実行
C 11 では、同時実行のための std::async および std::future ライブラリが導入されています。これにより、メイン プログラムを停止することなく、ノンブロッキング入力用の別のスレッドを生成できます。
実装
提供されたコードは、ノンブロッキング コンソール入力を示しています。
<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>
このコード内:
以上が同時実行性を使用して C でノンブロッキング コンソール入力を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。