I received that error:
pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->_data._owner == 0' failed.
And I cannot found any cause of that. However I'm not sure about the following piece of code:
Declarations:
std::mutex lock;
std::condition_variable cond;
Sequence of locks & unlocks:
std::unique_lock<std::mutex> lk(lock);
cond.wait(lk);
lock.unlock();
If I remove this sequence - everything works fine, but without any protection. I'm not sure if I use unique_lock
properly.
std::unique_lock
and the other locks acquire a mutex in constructor and releases it in destructor.
You called lock.unlock()
in your code manually, making it being called effectively twice.
After removing that statement your code should work properly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With