سؤال

واجهت خطأ في الكود أدناه.

recursive_mutex m_RecurMutex;
condition_variable cond;
unique_lock<recursive_mutex> lock(m_RecurMutex);
cond.wait(lock); // Error Here. 

ما هو السبب الذي يجعل هذا الخطأ؟

هل كانت مفيدة؟

المحلول

أفترض أن الخطأ

mutex.cc: In function ‘int main()’:
mutex.cc:9: error: no matching function for call to ‘boost::condition_variable::wait(boost::unique_lock<boost::recursive_mutex>&)’
/opt/local/include/boost/thread/pthread/condition_variable.hpp:17: note: candidates are: void boost::condition_variable::wait(boost::unique_lock<boost::mutex>&)
i

إن لم يكن، يرجى تصحيح لي. ال توثيق عروض boost::condition_variable::lock يأخذ boost::unique_lock<boost::mutex> كحجة ، وليس أ boost::unique_lock<boost::recursive_mutex> كما في مثالك.

نصائح أخرى

يجب أن تستخدم condition_variable_any بدلاً من ذلك ، فإن دلالات هذا الإصدار هي نفسها ، لكنها تتيح جميع أنواع أنواع القفل. العادية condition_variable ومع ذلك يقال أنه من المحتمل أن يكون أسرع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top