簡體   English   中英

std::condition_variable - 性能有什么不同嗎?

[英]std::condition_variable - Is there any difference in performance?

這兩者在性能上有什么區別:

第一個版本:

std::condition_variable conditionVarible;
std::mutex mutex;
std::chrono::steady_clock::time_point timePoint;

timePoint = std::chrono::steady_clock::now() + std::chrono::seconds(60);

std::unique_lock uniqueLock(mutex);
condition_variable.wait(uniqueLock, []() { 
    return std::chrono::steady_clock::now() >= timePoint; 
});

第二個版本:

std::condition_variable conditionVarible;
std::mutex mutex;
std::chrono::steady_clock::time_point timePoint;

timePoint = std::chrono::steady_clock::now() + std::chrono::seconds(60);

std::unique_lock uniqueLock(mutex);
condition_variable.wait_until(uniqueLock, timePoint, [](){ return false; });

這兩個代碼片段做了兩件完全不同的事情。

第一個將等到條件變量收到信號,然后檢查時間是否已經過去。 如果有,它就會醒來。 如果沒有,它返回到等待狀態直到下一個信號。 重復直到完成。

第二個忽略信號。 它只會等到時間過去。 編寫sleep_until是一種過於復雜且效率低下的方法。

簡而言之:這第一個將在時間過去第一個信號上喚醒; 第二個將在時間過去后醒來。

暫無
暫無

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

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