Tôi đang sử dụng biến có điều kiện để dừng luồng cho đến khi một luồng khác đã xử lý xong hàng đợi nhiệm vụ của nó (câu chuyện dài). Vì vậy, trên một thread Tôi khóa và chờ đợi:Làm cách nào để sử dụng biến điều kiện tăng để đợi một chuỗi hoàn tất xử lý?
boost::mutex::scoped_lock lock(m_mutex);
m_condition.wait(lock);
Khi thread khác đã hoàn thành nhiệm vụ của nó, nó báo hiệu thread chờ đợi như sau:
boost::mutex::scoped_lock lock(m_parent.m_mutex);
m_parent.m_condition.notify_one();
Vấn đề tôi đang nhìn thấy là sự chờ đợi thread không ngừng chờ đợi trừ khi tôi đặt một breakpoint trên các hướng dẫn sau nó (tôi đang sử dụng xcode, fyi). Vâng, điều này có vẻ lạ. Có ai biết tại sao điều này có thể xảy ra không? Tôi có sử dụng sai biến điều kiện không?
Mã này là một chút bối rối ... là lần đầu tiên 'm_mutex' trường hợp tương tự như thứ hai' m_parent.m_mutex'? –