Home > Article > Backend Development > 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!