加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在if-else梯形图中为特定条件设置互斥锁和解锁?

发布时间:2020-12-16 09:58:24 所属栏目:百科 来源:网络整理
导读:在线程中运行的类的成员函数中,我想保护对if-else梯形图中某些共享资源的访问,如下所示. if (condition){}// the mutex lock should be hereelse if (specific condition)// the mutex unlock should be here{}else ... 我希望以上述方式进行锁定,因为除了访
在线程中运行的类的成员函数中,我想保护对if-else梯形图中某些共享资源的访问,如下所示.

if (condition)
{}
// the mutex lock should be here
else if (specific condition)
// the mutex unlock should be here
{}
else ...

我希望以上述方式进行锁定,因为除了访问用于评估特定条件的共享资源之外,我不在任何地方访问/使用它,并且每个if / else块运行的所有操作都很长,我不想阻止访问该共享资源的其他线程.

我知道范围锁和互斥锁,但我想不出它可以在这种情况下使用的方式.问题是:

使用互斥锁定/解锁语句或甚至使用范围锁定如何在if-else梯形图中的特定条件下实现锁定/解锁?

此外,我希望从C(可能是03)的角度来看这个解决方案(或者那个问题不是来自Java这样具有隐式互斥支持和同步块的语言).在此先感谢所有的帮助.

解决方法

在执行锁定的函数中包含条件:

bool condition() {
    mutex_lock();
    bool result = ...
    mutex_unlock();
    return result;
}

然后在代码中使用

if () {
...
} else if (condition(...)) {
...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读