atomic

·cpp
#hpp

原子性

原子性指的是一系列操作要么全部成功完成,要么全部不发生,且在这个过程中不会被中断或观察到中间状态

原子性的基本特征

不可分割性:一个原子操作在执行时被视为一个整体,期间不会被其他操作打断。无论是成功还是失败,整个操作要么全部完成,要么全部不发生。

一致性:原子操作确保系统从一个一致的状态转移到另一个一致的状态,避免了中间状态可能带来的不一致问题。

为什么要引入这个特性

在多线程或多进程环境中,多个执行单元可能会同时访问和修改共享资源。如果这些操作不是原子性的,就可能导致竞态条件(Race Conditions),从而引发数据不一致、程序崩溃或安全漏洞。

alt text

而在epoll中,使用 epoll_create 创建一个 epoll 实例后,如果需要设置 close-on-exec 标志,通常需要额外调用 fcntl 系统调用。这两个操作之间存在一个时间窗口(时间间隔),在这期间如果进程执行了 exec 函数,新的程序可能会继承未设置 close-on-exec 的文件描述符,导致资源泄漏或安全隐患。

<atomic>

在c++