作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C++ 程序,它的测试类有两种方法:
void IntegrationTestBase::wait_test_end() {
unique_lock<mutex> lock(m_mutex);
m_cond.wait(lock);
}
void IntegrationTestBase::notify_test_end() {
XN_LOGF_ITEST_BASE(INFO, "Test end");
m_cond.notify_all();
m_cond
是条件变量,m_mutex
是互斥体。
流程是未知数量的线程可能会wait_test_end
,然后一些其他线程可能会notify_test_end
,它们都将停止等待。
问题是在 notify_test_end
之后,一些其他线程可能会 wait_test_end
并且它们将无限期地等待。
我该如何应对?
最佳答案
解决它的方法是了解什么是条件变量,什么不是。特别是,它不是一种信号机制。
条件变量保护某种资源(例如,一个真实的变量)。使用它的模式总是一样的:
关于c++ - 等待往事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036620/
我是一名优秀的程序员,十分优秀!