ホームページ > バックエンド開発 > C++ > C プログラムはどのようにして非同期コンソール入力を実装できますか?

C プログラムはどのようにして非同期コンソール入力を実装できますか?

Patricia Arquette
リリース: 2024-11-02 07:01:29
オリジナル
592 人が閲覧しました

How Can C   Programs Implement Asynchronous Console Input?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート