C 语言中的非阻塞控制台输入
编程中的一个常见要求是在程序不断运行和输出信息的同时处理用户命令。 C 中的传统控制台输入方法会阻止程序执行,直到用户按 Enter 键为止,但对于非阻塞输入,您需要替代方法。
解决方案:并发
C 11 引入了 std::async 和 std::future 并发库。这允许您在不停止主程序的情况下为非阻塞输入生成一个单独的线程。
实现
提供的代码演示了非阻塞控制台输入:
<code class="cpp">#include <iostream> #include <future> #include <thread> #include <chrono> 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>
在此代码中:
以上是如何使用并发在 C 中实现非阻塞控制台输入?的详细内容。更多信息请关注PHP中文网其他相关文章!