我有线程 1 执行以下代码:
unique_lock<mutex> ul(m);
while(condition == true)
cv.wait(ul);
线程 2 执行此代码:
condition = false;
cv.notify_one();
不幸的是,我遇到了时间问题:
T1: condition checks true
T2: condition set to false
T2: cv.notify_one()
T1: cv.wait()
线程 1 完全错过了通知,并在 wait() 上保持阻塞。我尝试使用带有谓词但结果基本相同的 wait() 版本。也就是说,谓词的主体执行检查,但在它返回之前,条件的值会发生变化并发送通知。然后谓词返回。
我怎样才能解决这个问题?