繁体   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