工作原理 std::condition_variable::wait_until

How works std::condition_variable::wait_until

为什么这段代码运行得非常快?

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 被忽略了

您可能得到 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;
}