首頁 > 後端開發 > C++ > 主體

C程式如何實現非同步控制台輸入?

Patricia Arquette
發布: 2024-11-02 07:01:29
原創
544 人瀏覽過

How Can C   Programs Implement Asynchronous Console Input?

C 程式的非同步控制台輸入

非阻塞控制台輸入對於程式連續執行時間處理使用者命令至關重要。在 C 中,有多種方法可以實現此目的。

C 11 解

使用 C 11 的有效方法是利用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板