簡體   English   中英

std :: condition_variable :: wait_until對std :: this_thread :: sleep_for有什么好處嗎?

[英]Does std::condition_variable::wait_until have any advantage against std::this_thread::sleep_for?

在等待時間的情況下:

我們的軟件在后台運行,並且每隔20-30分鍾與服務器同步數據。

我想用

std::this_thread::sleep_for

但我的上司強烈反對任何形式的睡眠功能。 他建議

std::condition_variable::wait_until(lock, timeout-time, pred)

我想知道在這種情況下sleep_for是否有任何不利之處?

正如評論中已經指出的那樣,它僅取決於您的用例。 兩者之間的主要區別在於,如果觸發它, condition_variable 可以提前喚醒。 您還可以添加一個必須滿足的謂詞才能實際喚醒,但這只是一種生活品質的補充。 順便說一下, sleep_for的等價物是wait_for而不是wait_until condition_variable也很適合在多個線程之間進行通信或同步。

鑒於你所說的一切,我會使用condition_variable ,原因如下:

  1. 讓線程長時間休眠並不是一個好主意,因為您的應用程序可以隨時退出(或者可以請求退出)。 在這種情況下,您可能希望您的線程正確退出,因此您必須能夠隨時將其喚醒。
  2. 您想要動態更改配置。 如果您的線程必須使用新參數重新啟動,或者如果您需要該線程來實際加載配置文件,您也不希望等待下一個20分鍾的intervall結束。

暫無
暫無

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

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