工作原理 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;
}
为什么这段代码运行得非常快?
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;
}