首页  >  文章  >  后端开发  >  C程序如何实现异步控制台输入?

C程序如何实现异步控制台输入?

Patricia Arquette
Patricia Arquette原创
2024-11-02 07:01:29485浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn