Home >Backend Development >C++ >How Can C Programs Implement Asynchronous Console Input?

How Can C Programs Implement Asynchronous Console Input?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 07:01:29588browse

How Can C   Programs Implement Asynchronous Console Input?

Asynchronous Console Input for C Programs

Non-blocking console input is essential for handling user commands while a program continuously runs. In C , there are various approaches to achieve this.

C 11 Solution

One effective method using C 11 is to utilize the std::thread and <code class="hljs">std::future libraries. Here's an example:

<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>

In this example, the std::thread library is used to create a separate thread that handles input while the main thread continues execution. The <code class="hljs">std::future library is used to retrieve the input from the separate thread asynchronously.

This approach allows the program to output information while simultaneously handling user commands, providing a responsive and non-blocking user interface.

The above is the detailed content of How Can C Programs Implement Asynchronous Console Input?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn