std :: condition_variable :: wait_until的工作方式

问题描述 投票:0回答:1

为什么此代码工作得很快?

int main() {
    std::condition_variable cv;
    std::mutex mtx;
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait_until(lock, std::chrono::system_clock::now() + 10000ms);

    return 0;
}

似乎好像wait_until被忽略了>>

为什么此代码运行非常快? int main(){std :: condition_variable cv; std :: mutex mtx; std :: unique_lock <:mutex>lock(mtx); cv.wait_until(lock,std :: chrono :: system_clock :: ...

c++ condition-variable
1个回答
3
投票

您可能会得到一个spurious wakeup。尝试使用接受谓词的重载...

#include <condition_variable>

int main() {
    std::condition_variable cv;
    std::mutex mtx;
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait_until(lock, std::chrono::system_clock::now() + 10000ms, []{ return false; });

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.