」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 C++ 中為互動式應用程式實作非阻塞控制台輸入?

如何在 C++ 中為互動式應用程式實作非阻塞控制台輸入?

發佈於2024-11-08
瀏覽:546

How can I implement non-blocking console input in C   for interactive applications?

C 中的非阻塞控制台輸入

在現代C 中,非阻塞控制台輸入允許在程式運行時無縫處理使用者命令繼續運行並輸出訊息。此功能在互動式應用程式和遊戲中通常至關重要。

C 11 解決方案:

實現非阻塞控制台輸入的一種有效方法是使用單獨的控制台線。這種方法允許主程式繼續執行,同時後台執行緒監視控制台的輸入。以下程式碼範例使用 C 11 示範了此方法:

#include 
#include 
#include 
#include 

static std::string getAnswer()
{
    std::string answer;
    std::cin >> answer;
    return answer;
}

int main()
{
    std::chrono::seconds timeout(5);
    std::cout  future = std::async(getAnswer);

    if (future.wait_for(timeout) == std::future_status::ready)
        answer = future.get();

    std::cout 

說明:

在此範例中,getAnswer 函數負責擷取使用者的輸入。 std::async 函式啟動一個單獨的線程,執行 getAnswer 並傳回一個 std::future 對象,可用來擷取結果。

主程式設定了 5 秒的超時時間來等待使用者輸入。如果使用者在此時間內輸入內容,程式會將答案變數設定為輸入。否則,它預設為“也許”。

這種非阻塞輸入方法允許程式繼續其正在進行的計算和輸出,同時仍有效地回應使用者輸入。它是建立互動式 C 應用程式的強大技術。

最新教學 更多>
  • JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 中的暫停和恢復逾時使用 JavaScript 時,可能需要控制非同步操作的流程,例如逾時。在這裡,我們探索暫停和恢復活動逾時的方法,以及檢索當前逾時的剩餘時間。 暫停和恢復逾時要暫停逾時,您可以使用包裝器攔截 window.setTimeout 呼叫並提供必要功能的函數。包裝函...
    程式設計 發佈於2024-11-08
  • 提高 Spring Boot 應用程式的效能 - 第一部分
    提高 Spring Boot 應用程式的效能 - 第一部分
    啟動Spring Boot應用程式時,我們通常使用啟動器提供的預設設置,這對於大多數情況來說已經足夠了。但是,如果我們需要效能,則可以進行具體調整,如本文第一部分所示。 將 Tomcat 替換為另一個 servlet 容器 應用程式web、RESTFul,使用Spring MVC,...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中高效合併關聯數組並實現健全的單元測試?
    如何在 PHP 中高效合併關聯數組並實現健全的單元測試?
    在 PHP 中合併關聯數組:高效選項和單元測試策略在 PHP 中合併關聯數組:高效選項和單元測試策略簡介組合關聯數組是 PHP 程式設計中的常見任務。在本文中,我們將探討將兩個或多個關聯數組合併為單一內聚數組的最佳實踐。我們還將討論有效的方法並提供詳細的單元測試策略。 array_merge 與&q...
    程式設計 發佈於2024-11-08
  • 抽象:一種程式化的思考方式
    抽象:一種程式化的思考方式
    「為什麼程式設計師拒絕起床?他們陷入了太多的抽象層!」 在程式設計中,就像在生活中一樣,我們經常需要簡化複雜的事情以使它們更易於管理。想像一下,試圖向從未見過電腦的人解釋互聯網,您不會從談論伺服器和協定開始。相反,你可以使用類比、故事或簡化版本來傳達這個想法。這就是程式設計中抽象的意義所在:簡化複雜...
    程式設計 發佈於2024-11-08
  • 您可以將內聯腳本與 JavaScript 中的「src」屬性結合嗎?
    您可以將內聯腳本與 JavaScript 中的「src」屬性結合嗎?
    JavaScript 中具有SRC 屬性的內聯腳本在JavaScript 中,通常使用 標籤包含腳本,其中src 屬性指定外部腳本檔案。然而,有時會想知道是否可以將內聯腳本與 src 屬性組合起來。 規則官方行為受 HTML 4.01 規範管轄,該規範聲明 src 屬性優先於 標記的主體。這意味著...
    程式設計 發佈於2024-11-08
  • 不可變資料結構:ECMA 4 中的記錄和元組
    不可變資料結構:ECMA 4 中的記錄和元組
    不可變資料結構:ECMAScript 2024 中的新功能 ECMAScript 2024 引入了幾個令人興奮的更新,但對我來說最突出的一個功能是引入了不可變資料結構。這些新結構——記錄和元組——改變了 JavaScript 中資料管理的遊戲規則。它們提供了一種令人滿意的方式來保持...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中為註冊用戶自訂 URL?
    如何在 PHP 中為註冊用戶自訂 URL?
    在PHP 中為註冊用戶設定自訂URL對於電子商務平台來說,為每個用戶提供唯一的URL 對於展示他們的產品至關重要單獨的產品。透過產生單獨的網址(例如 www.seloncart.com/customername),您可以顯示客戶的特定產品。為此,請按照下列步驟操作:設定伺服器路由: 修改伺服器設定以...
    程式設計 發佈於2024-11-08
  • 我如何用 Python 建立 QR 碼產生器
    我如何用 Python 建立 QR 碼產生器
    這將是一篇簡短的文章,介紹我如何在 Python 中建立一個簡單的二維碼產生器 對於此步驟,您需要使用 qrcode 函式庫:https://pypi.org/project/qrcode/ 建立專案資料夾後我所做的第一步就是建立一個虛擬環境。 Python 中的虛擬環境只是電腦上另一個獨立的工作區...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中驗證整數資料型態?
    如何在 PHP 中驗證整數資料型態?
    在驗證 PHP 中的整數資料類型在 PHP 中處理數位資料時,確定變數是否表示整數至關重要。為了解決這個問題,通常會使用 is_int() 函數。然而,它的行為有時可能是意想不到的,導致混亂。 為了修正這個問題,我們引入了驗證整數資料型別的替代方法:FILTER_VALIDATE_INT使用該方法,...
    程式設計 發佈於2024-11-08
  • 為什麼 DOMSubtreeModified 在 DOM Level 3 中被棄用以及替代方案是什麼?
    為什麼 DOMSubtreeModified 在 DOM Level 3 中被棄用以及替代方案是什麼?
    在DOM Level 3 中棄用DOMSubtreeModified 事件DOMSubtreeModified 事件曾經是跟踪文檔子樹中更改的基本元素,現在已被跟踪在DOM level 3 中已過時。了解這種棄用背後的基本原理並確定合適的替代方案至關重要。 DOM Level 3 規範對 DOMSu...
    程式設計 發佈於2024-11-08
  • 將 PDO 連線設為 NULL 是否真正關閉連線並釋放資源?
    將 PDO 連線設為 NULL 是否真正關閉連線並釋放資源?
    關閉PDO連線在PHP中,有兩種​​流行的資料庫連線介面:MySQLi和PDO。雖然兩者的用途相似,但它們處理連接關閉的方式不同。 MySQLi 需要明確關閉函數呼叫來釋放連接:$this->connection->close();相反,PDO 使用空賦值來終止連線:$this->...
    程式設計 發佈於2024-11-08
  • 動態資料管理:了解 Vue.js 中的資料屬性
    動態資料管理:了解 Vue.js 中的資料屬性
    Vue.js 是用於開發現代 Web 應用程式的最受歡迎的 JavaScript 框架之一。它提供了一種創建互動式動態應用程式的有效方法。在本文中,我們將深入研究 Vue.js 中的 data 屬性,並探討它的工作原理、為什麼要使用它以及圍繞它的最佳實踐。 什麼是資料屬性? 在Vu...
    程式設計 發佈於2024-11-08
  • 如何有效地檢查 Python 字串中是否存在列表元素?
    如何有效地檢查 Python 字串中是否存在列表元素?
    檢查Python 中字串中清單元素的存在Python 程式設計中的一個常見任務是驗證字串是否包含給定的元素列表。傳統方法採用 for 循環,如下面的程式碼所示:extensionsToCheck = ['.pdf', '.doc', '.xls'] for extension in extensio...
    程式設計 發佈於2024-11-08
  • \'window.JSON\' 如何在現代瀏覽器中提供本機 JSON 支援?
    \'window.JSON\' 如何在現代瀏覽器中提供本機 JSON 支援?
    瀏覽器原生JSON 支援:window.JSON 物件瀏覽器原生JSON 支援:window.JSON 物件window.JSON 物件為現代Web 瀏覽器提供原生JSON 解析與序列化功能,實現結構化資料的高效能、安全處理。本文探討了該物件的詳細信息,包括其支援的方法和瀏覽器相容性。 window...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3