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

c – 我可以使用互锁操作来更新多个值以避免锁定关键部分/互斥锁

发布时间:2020-12-16 10:50:02 所属栏目:百科 来源:网络整理
导读:我有一个多线程应用程序(C),我需要增加/更改一系列值. 如果我使用一系列互锁操作,它们被认为是单个原子操作吗?就像在这个例子中: InterlockedIncrement(value1);InterlockedIncrement(value2);InterlockedExchange(oldValue,newValue); 或者我们更好地锁定
我有一个多线程应用程序(C),我需要增加/更改一系列值.
如果我使用一系列互锁操作,它们被认为是单个原子操作吗?就像在这个例子中:

InterlockedIncrement(&value1);
InterlockedIncrement(&value2);
InterlockedExchange(&oldValue,newValue);

或者我们更好地锁定以执行同步?像这样:

EnterCriticalSection(&cs);
value1++;
value2++;
oldValue = newValue;
LeaveCriticalSection(&cs);

我认为需要一个锁定,但我不确定……所有的值要么处于旧状态,要么处于新状态,这一点非常重要.

解决方法

InterlockedIncrement本身是一个原子操作,但InterLockedIncrement系列并不是原子的.如果您的要求是获得一系列操作的原子性,那么您可以使用临界区.

(编辑:李大同)

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

    推荐文章
      热点阅读