memory-barriers 相关问题

内存屏障是一种特殊的处理器指令,它对内存访问在多处理器或多核系统中的其他处理器/内核可见的顺序施加限制。

LFENCE 是否在 AMD 处理器上进行序列化?

在最近的 Intel ISA 文档中,lfence 指令被定义为序列化指令流(防止指令流中的乱序执行)。特别是

回答 2 投票 0

一致性协议和存储缓冲区

考虑下面的代码: std::atomic a = 100; --- 中央处理器0: a.store(101, std::memory_order_relaxed); --- 中央处理器1: int tmp = a.load(std::memory_order_relaxed); // 假设 `tmp` 是 101。 让我们...

回答 1 投票 0

为什么更新ARM gic ICC_PMR寄存器后需要DSB SY?

在 Linux 内核中,如果 ICC_CTLR_EL1.PMHE == 0b1,则更新 SYS_ICC_PMR_EL1 后会跟随 DSB SY。 ./arch/arm64/include/asm/irqflags.h: 45 write_sysreg_s(GIC_PRIO_IRQON,SYS_ICC_PMR_...

回答 1 投票 0

Vulkan 同步:避免写后写危险,为什么这是正确的?

在问题中:“第一个渲染通道写入深度附件。第二个渲染通道重新使用相同的深度附件。” 我看到官方维基(vulkan wiki)说: 这是一个例子...

回答 1 投票 0

实际上谁在 MPCore 中乱序访问内存?

根据我目前对 ARM Cortex A57 和 A78 TRM 的理解,微操作可以乱序发送到多个执行管道中的 1 个。 这是独立

回答 1 投票 0

共享内存linux变量多进程同步为什么会出错? [重复]

我创建共享内存,用于进程间共享数据。共享内存使用数据结构保存数据: 结构 shared_cfg { 易失性 uint32_t idx; 易失性 uint32_t cfg_lock; ...

回答 0 投票 0

Java中volatile write前为什么没有LoadStore barrier(JSR-133排序规则)

The JSR-133 Cookbook for Compiler Writers”中列出的 JMM 规则声明 Normal Load 和 Normal Store 不能在它们之后用 volatile-Store 重新排序。为此,他们发布了一个 StoreStore

回答 0 投票 0

原子操作有内存顺序问题吗?

原子操作之间是否存在关系,例如原子也需要内存顺序?对于代码: 静态整数零 = 0; static int proc_enter(struct proc_context* ctx, st...

回答 0 投票 0

C11内存栅栏和原子操作

我正在研究记忆障碍。 我对以下代码有一些疑问。 //版本 1 线程 A: *val = 1; atomic_thread_fence(memory_order_release); atomic_store_explicit(发布...

回答 1 投票 0

Interlocked.Exchange影响以下指令

如果线程 1 运行: this.Field.Flag = false; ... var oldValue = Interlocked.Exchange(ref this.Field, newValue); oldValue.Flag = true; 并且线程 2 看到 oldValue.Flag == true,是否保证...

回答 1 投票 0

在 C/C++ 中如何确保内存写入是在读取之后?

我最近在研究 C/C++ 中的 memory_order,我已经阅读了 https://en.cppreference.com/w/cpp/atomic/memory_order , https://gcc.gnu.org/wiki/Atomic/GCCMM /AtomicSync ,但对

回答 0 投票 0

我是否需要 MemoryBarrier 来增加无锁集合中的索引

我正在尝试实现一个简单而快速的生产者/消费者集合,能够从另一个线程复制并使其尽可能快,因此我没有使用任何锁定

回答 1 投票 0

Lock free single real-time writer and one/multiple non-real-time reader

在论文“实时和非实时应用程序之间的非阻塞同步”中,清单 2 中收听了以下伪代码。它提出了一种非阻塞实现......

回答 0 投票 0

易失性与内存屏障

是否有可能通过内存屏障实现易失性变量的相同“保证”(始终读/写内存而不是寄存器)? 只需在一个线程中写一个变量...

回答 1 投票 0

在记忆顺序上,relaxed和acquire有什么区别?

使用 std::sync::atomic::AtomicPtr; fn get_data() -> &'静态数据{ 静态 PTR:AtomicPtr = AtomicPtr::new(std::ptr::null_mut()); 让 mut p = PTR.load(Acquire); 如果 p.

回答 0 投票 0

易变的写/读是否确保“附近”字段的可见性?

只是一个简单的例子。 lock、Interlocked等就不用解释了。 bool 表示状态值是否可用。 state 和 bool 之后没有进一步修改。 内部状态; 卷...

回答 0 投票 0

演示 LoadStore 重新排序,加载获取一个值往返到另一个线程,在实践中使用宽松的加载/存储?

#include #包括 void test_relaxed() { 使用命名空间标准; 原子 x{0}; 原子 y{0}; std::thread t1([&] { 自动 r1...

回答 0 投票 0

演示 LoadStore 重新排序,加载获取一个值往返到另一个线程,在实践中使用宽松的加载/存储?

#include #包括 void test_relaxed() { 使用命名空间标准; 原子 x{0}; 原子 y{0}; std::thread t1([&] { 自动 r1...

回答 0 投票 0

在实践中演示 StoreLoad 重新排序,真实的编译器和 CPU 使用宽松的存储和加载?

void test_relaxed() { 原子 x{0}; 原子 y{0}; std::thread t1([&] { 自动 r1 = y.load(memory_order_relaxed); //A x.store(r1, memory_order_rela...

回答 0 投票 0

std::atomic<T>::load 在 c++ 中调用任何系统调用吗?

我的问题是,当我们尝试存储或加载原子变量时,加载和存储会调用任何系统调用吗?

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.