【发布时间】:2016-03-16 13:08:27
【问题描述】:
我有一个带有两个方法的测试类的 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 并且它们将无限期地卡在等待中。
我该如何应对?
【问题讨论】:
-
我发现this post 在寻找一个好例子时很有用。
标签: c++ multithreading concurrency