memory-barriers 相关问题

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

在 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

碎片着色器到主机依赖性

我在碎片着色器中的存储缓冲区中写入数据,并试图直接读取主机上的数据后。如果我在做同样的事情,但使用Compute shader,则屏障工作,我可以 ...

回答 1 投票 2

为什么要支持到C++20的内存_顺序释放?

https:/en.cppreference.comwcppatomicmemory_order From cppreference, memory_order_release can use until C++20? 谁能解释一下,为什么C++标准会删除这个,我们的内存_顺序是哪个...

回答 2 投票 0

如果存储与内存_顺序_获取[关闭]会发生什么?

我们知道:加载用memory_order_acquire,存储用memory_order_release,但是我发现用gcc4.8.2,打开-O2,出现了一个编译错误,usrincludec++4.8.2atomic:199:9:error:invalid ...。

回答 1 投票 0

在Linux内核的KCOV代码中,为什么会有barrier()?

在Linux KCOV代码中,为什么要放置这个障碍()? void notrace __sanitizer_cov_trace_pc(void) { struct task_struct *t; enum kcov_mode mode; t = current; * * 我们对 ...

回答 1 投票 2

小型PCIE TLP写入的原子性

从软件进程的角度来看,是否有任何关于PCIe设备针对常规内存的卡到主机写入的保证,其中单个TLP写入是完全包含的......。

回答 1 投票 1

内存障碍是否会阻止分支预测?

这个问题不假设任何特定的架构。假设我们有一个多核处理器,具有缓存一致性、无序执行和分支预测逻辑。我们还假设存储...

回答 1 投票 0

MOVNTI存储相对于同一线程所做的其他MOVNTI存储是否重新排序?

TL;DR:我理解MOVNTI操作相对于程序的其他部分是没有顺序的,所以需要SFENCEMFENCE。但是MOVNTI操作相对于其他MOVNTI操作的......是不是没有排序?

回答 1 投票 0

你好,想在c#中创建一个内存屏障的图解。

我主动向我的团队提出了一个通过重新排列指令来引入bug的情况,然而我对CPU,CLR,和JIT的理解相当业余,我......

回答 1 投票 0

对于mutex获取-交换循环(或队列获取-加载循环),是否应该结合内存栅栏,还是应该避免?

假设一个重复的获取操作,尝试加载或交换一个值,直到观察到的值是期望值。让我们以cppreference原子标志的例子为出发点: void f(int ....

回答 1 投票 1

在x86上实现std::atomic_thread_fence(std::memory_order_seq_cst),而不会产生额外的性能惩罚。

一个后续问题,为什么这个`std::atomic_thread_fence`能用,作为一个虚拟的联锁操作比_mm_mfence要好,而且实现的方法也不少,哪个联锁 ...

回答 1 投票 1

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