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中文網其他相關文章!