[英]C++ timeout on getline
我需要所有線程定期檢查它們是否仍在運行,以便它們可以在程序結束時自行終止。 對於除其中一個以外的所有對象,這僅是檢查狀態變量的問題,而最后一個是用戶交互線程,其循環將無限期地等待用戶輸入,僅在用戶輸入指令時檢查狀態變量。 此時程序仍然會失敗,因為類在未運行時無法正常運行。 不過,理想情況下,我不想達到這一點。
我認為最好的解決方案,如果可能的話,是在getline上超時,但是如果不可能或不是一個好的選擇,那么我願意接受任何允許線程干凈終止的選擇。
順便說一句,我看到很多提到std :: getline的內容。 無論我是否使用名稱空間,getline似乎都能正常工作。 一個是另一個的別名,哪個才是合適的別名?
沒有(標准)方法可以在std::getline
上設置超時。 特別是,C ++標准庫不知道線程的存在
為了回答您的第二個問題,標准名稱為std::getline
版本是名稱空間中的版本。
如果線程沒有需要執行的任何清理操作,則另一種解決方案是在您要結束進程時調用exit
。 exit
將終止所有線程並結束進程。
您需要另一個線程來向用戶線程發出信號。
如何執行此操作將取決於您使用的線程庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.