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 other locks acquire a mutex in the constructor and release it in the destructor.
You called lock.unlock()
in your code manually, making it called effectively twice.
After removing that statement your code should work properly.