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