Cha*_*ert 5 c++ multithreading
在线程中运行的类的成员函数中,我想保护对if-else梯形图中某些共享资源的访问,如下所示.
if (condition)
{}
// the mutex lock should be here
else if (specific condition)
// the mutex unlock should be here
{}
else ...
Run Code Online (Sandbox Code Playgroud)
我希望以上述方式进行锁定,因为除了访问共享资源以进行评估之外,specific condition我不在任何地方访问/使用它,并且每个if/else块运行的所有操作都运行得很长,我不想阻止其他线程从访问该共享资源.
我知道范围锁和互斥锁,但我想不出它可以在这种情况下使用的方式.问题是:
使用互斥锁定/解锁语句或甚至使用范围锁定如何在if-else梯形图中的特定条件下实现锁定/解锁?
另外,我希望从C++(可能是03)的角度来看这个解决方案(或者不是来自Java这样的语言,具有隐式互斥锁支持和同步块).在此先感谢所有的帮助.
在执行锁定的函数中包含条件:
bool condition() {
mutex_lock();
bool result = ...
mutex_unlock();
return result;
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中使用
if () {
...
} else if (condition(...)) {
...
}
Run Code Online (Sandbox Code Playgroud)