Başka bir iş parçacığı işlenmeyi tamamlayana kadar bir iş parçacığı durdurmak için koşullu bir değişken kullanıyorum görev sırası (uzun hikaye). Yani, bir iş parçacığı üzerinde ben kilitlemek ve bekle şu şekildedir:Bir iş parçacığının işlemeyi tamamlamasını beklemek için bir destek koşulu değişkenini nasıl kullanırım?
boost::mutex::scoped_lock lock(m_mutex);
m_condition.wait(lock);
diğer iplik 's görevleri tamamlandıktan sonra, bekleyen iş parçacığı işaret:
boost::mutex::scoped_lock lock(m_parent.m_mutex);
m_parent.m_condition.notify_one();
görüyorum sorun bekleyen olmasıdır Aşağıdaki yönergeleri bir kesme noktası ayarlamadık sürece iş parçacığı beklemez (Ben xcode, fyi kullanıyorum). Evet, bu garip görünüyor. Bunun neden olabileceğini bilen var mı? Koşul değişkenini yanlış mı kullanıyorum?
kodu ... biraz kafa karıştırıcı ilk 'ikinci' m_parent.m_mutex' aynı örneği m_mutex' mı? –