簡體   English   中英

getline上的C ++超時

[英]C++ timeout on getline

我需要所有線程定期檢查它們是否仍在運行,以便它們可以在程序結束時自行終止。 對於除其中一個以外的所有對象,這僅是檢查狀態變量的問題,而最后一個是用戶交互線程,其循環將無限期地等待用戶輸入,僅在用戶輸入指令時檢查狀態變量。 此時程序仍然會失敗,因為類在未運行時無法正常運行。 不過,理想情況下,我不想達到這一點。

我認為最好的解決方案,如果可能的話,是在getline上超時,但是如果不可能或不是一個好的選擇,那么我願意接受任何允許線程干凈終止的選擇。

順便說一句,我看到很多提到std :: getline的內容。 無論我是否使用名稱空間,getline似乎都能正常工作。 一個是另一個的別名,哪個才是合適的別名?

沒有(標准)方法可以在std::getline上設置超時。 特別是,C ++標准庫不知道線程的存在

為了回答您的第二個問題,標准名稱為std::getline版本是名稱空間中的版本。

您執行此操作的最簡單方法可能是剝離另一個線程,其唯一目的是執行getline()

Google會返回此結果 ,盡管這在很大程度上取決於Win32,但它會為您提供示例。 但是,您應該能夠將其移植到所使用的任何線程庫。

如果線程沒有需要執行的任何清理操作,則另一種解決方案是在您要結束進程時調用exit exit將終止所有線程並結束進程。

您需要另一個線程來向用戶線程發出信號。
如何執行此操作將取決於您使用的線程庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM