我知道 atomic 通常用于竞争条件的上下文中,意味着一致性和结果的确定性根据多线程/多处理环境。没关系。但是最近我读到了关于Linux中的原子系统调用,并且不明白 atomic 在这里实际意味着什么,即 原子性 >实施即可。这是否意味着这个系统调用只是使用资源上的锁(例如目标文件inode上的open())或者还有更多,可能是某些内核保证?我考虑禁用中断但不能禁用所有中断。可能就是这样,因为内核使用的所有中断都可以被禁用而其他中断非常重要并且可以中断我们的 atomic 系统调用?
答案 0 :(得分:0)
这实际上取决于系统调用。引用man 3 read
引用posix编程手册:
I / O旨在成为普通文件和管道的原子 FIFO中。 Atomic意味着来自单个操作的所有字节 一起开始一起结束,没有交错 其他I / O操作。这是终端的已知属性 没有被尊重,终端是明确的(并且隐含地) 永久地除外,使行为不明确。该 其他设备类型的行为也未指定,但是 措辞旨在暗示未来的标准可能会选择 指定原子性(或不)。
显然,这仅适用于IO操作。