我为在互斥锁/锁周围弯曲我的思维而苦苦挣扎。情况:
到目前为止我所拥有的:任务A的线程(不定期调用):
{
std::unique_lock<std::mutex> mlock(the_mutex);
TaskA();
}
和任务B(挂接到渲染线程中)
{
if mutex.try_lock()
{
TaskB();
the_mutex.unlock();
}
}
The_mutex是对象的常见std :: mutex。
真的真的很容易一次,还是我错过了什么?在过去烦人的多线程错误之后,我对这个主题变得不安全。提前谢谢。
您的代码正确,但是您最好在任务B中使用RAII。
std::unique_lock<std::mutex> mlock(the_mutex, std::defer_lock);
if (mlock.try_lock()) {
TaskB();
}