首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是“原子”系统调用?

什么是“原子”系统调用?
EN

Stack Overflow用户
提问于 2015-03-21 16:49:00
回答 1查看 2.2K关注 0票数 2

我知道原子通常在竞赛条件下使用,并且根据多线程/多处理环境,意味着结果的一致性和确定性。没关系。但是最近我读到了Linux中的原子系统调用,不明白原子在这里实际上意味着什么,即这个原子性是如何实现的。这是否意味着这个系统调用只是使用资源上的锁(例如,目标文件inode上的open() ),或者还有更多的,可能是一些内核保证?我考虑禁用中断,但并不是所有的中断都可以禁用。也许这就足够了,因为内核使用的所有中断都可以被禁用,而其他中断太重要了,可以中断我们的原子系统调用吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-21 16:55:55

这取决于系统呼叫。引用man 3 read,其中引用了posix编程手册:

I/O是用来对普通文件和管道以及FIFO进行原子化的。原子意味着从一起开始的单个操作中的所有字节一起结束,而不与其他I/O操作交织。这是终端的一个已知属性,这是不被遵守的,并且终端被显式地(并且隐式地永久地)例外,使得行为没有被指定。其他设备类型的行为也未具体说明,但其措辞意在暗示未来的标准可能选择指定原子性(或不指定)。

显然,这只适用于IO操作。

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

https://stackoverflow.com/questions/29185304

复制
相关文章

相似问题

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