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