首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原子变量Vs。原子操作

原子变量Vs。原子操作
EN

Stack Overflow用户
提问于 2010-05-19 17:13:38
回答 1查看 8.1K关注 0票数 3

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

代码语言:javascript
复制
critical_code
{
    P(mutex)
    a := something
    b := something
    V(mutex)
}

假设我的硬件/OS/编译器支持原子变量。然后我修改了上面的代码,如下所示。

代码语言:javascript
复制
code
{
    atomic a := something
    atomic b := something
}

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

由衷地,

Srinivas Nayak

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-19 17:15:15

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

只有在知道每次写和读都是原子的情况下,你才会依赖原子变量--也就是说,如果你知道当一个进程更新变量时,另一个进程不会读取部分更改的变量,你已经很高兴了。

所以原子变量是一个变量的原子,而不是一组变量的原子。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2864179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档