跳转至

ev-stdexec-atomic-ref-submission-ring-002

字段 值
项目 NVIDIA/stdexec
固定 commit 6d7ad689f4d4
路径 include/exec/linux/io_uring_context.hpp
行段 L217-L226
特性 std::atomic_ref
许可证 Apache-2.0
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 否
发现方式 manual

用法

把 mmap 得到的 io_uring 共享内存地址绑定到 atomic_ref

为什么典型

内核与用户态共享的环形缓冲区不能用 std::atomic,atomic_ref 在原地对普通 __u32 提供原子操作。

摘录

      explicit __submission_queue(memory_mapped_region const & __region,
                                  memory_mapped_region const & __sqes_region,
                                  ::io_uring_params const &    __params)
        : __head_{*__at_offset_as<__u32*>(__region.data(), __params.sq_off.head)}
        , __tail_{*__at_offset_as<__u32*>(__region.data(), __params.sq_off.tail)}
        , __array_{__at_offset_as<__u32*>(__region.data(), __params.sq_off.array)}
        , __entries_{static_cast<::io_uring_sqe*>(__sqes_region.data())}
        , __mask_{*__at_offset_as<__u32*>(__region.data(), __params.sq_off.ring_mask)}
        , __n_total_slots_{__params.sq_entries}
      {}

备注

生产路径;atomic_ref 构造自 io_uring 提交队列的 head/tail 偏移。

查看固定 commit 源码 · 返回证据索引