gpt4 book ai didi

multithreading - 原子变量比。原子操作

转载 作者:行者123 更新时间:2023-12-04 06:43:35 25 4
gpt4 key购买 nike

假设我有两个共享变量 - ab - 彼此相关。当多个应用程序共享这些共享变量时,对它们的访问需要是原子操作,否则关系可能会中断。所以为了确保互斥,我将把他们的修改放在一个受锁保护的临界区。

critical_code
{
P(mutex)
a := something
b := something
V(mutex)
}

假设我的硬件/操作系统/编译器支持原子变量。然后我修改了上面的代码如下。

code
{
atomic a := something
atomic b := something
}

当被多个应用程序访问时,这段代码能否确保互斥?

此致,
斯里尼瓦斯纳亚克

最佳答案

不,你还需要一个临界区。虽然每个变量的更新都是原子的,但这仍然不能保证不会出现一个进程只修改一个变量而另一个进程已经在读取不一致状态的情况。

当足以知道每次写入和每次读取都是原子的时,您只依赖原子变量——也就是说,如果您知道当一个进程正在更新变量时,另一个进程不会读取部分更改的变量,那么您已经很高兴了变量。

因此原子变量对于每个变量都是原子的,而不是对于每组变量。

关于multithreading - 原子变量比。原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864179/

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