C プログラムのノンブロッキング コンソール入力戦略
現代のプログラミングでは、多くの場合、リアルタイムのユーザー コマンドを処理しながら、プログラムは継続的に実行され、情報を出力します。この機能を実現するには、非ブロックのコンソール入力が不可欠です。この記事では、C でノンブロッキング コンソール入力を効果的に実装するためのさまざまな手法を検討します。
C 11 と Future を使用した非同期入力
1 つのアプローチは C 11 の
例:
#include
#include
#include
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 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);
}
その他の考慮事項:
上記以外
-
ノンブロッキング入力ライブラリ: Boost.Asio や libevent などのライブラリは、専用のノンブロッキング入力機能を提供します。
- プラットフォーム固有の方法: さまざまなオペレーティング システムが、ノンブロッキング入力のシステム コールを提供します。
アプローチの選択は、プラットフォームの互換性、パフォーマンス要件、簡単な操作などの要素によって異なります。実装。さまざまなオプションを検討することで、特定のプロジェクトのニーズに最適なソリューションを確実に選択できます。
以上がC プログラムは実行をブロックせずにユーザー入力を受け入れるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。