gpt4 book ai didi

c++ - 我可以使用互锁操作来更新多个值以避免锁定临界区/互斥锁吗?

转载 作者:太空狗 更新时间:2023-10-29 19:36:54 25 4
gpt4 key购买 nike

我有一个多线程应用程序 (C++),我需要在其中递增/更改一系列值。如果我使用一系列互锁操作,它们是否被视为单个原子操作?就像这个例子:

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

或者我们用锁来执行同步会更好吗?像这样:

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

我认为需要锁定,但我不确定...所有值都处于旧状态或新状态非常重要。

最佳答案

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

关于c++ - 我可以使用互锁操作来更新多个值以避免锁定临界区/互斥锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/983305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com