用于在不使用锁的情况下同步多线程环境或其他形式的分布式系统的方法和算法的总称。
我正在基于此存储库和多处理器编程艺术一书的第 9.8 章在 C 中实现我的无锁链表。我认为它们是基于哈里斯的论文。我...
linux 内核中的 WRITE_ONCE 和 READ_ONCE
有人可以解释一下WRITE_ONCE和READ_ONCE的用法吗? 并且 WRITE_ONCE 在内部使用了 volatile 限定符。为什么? WRITE_ONCE和READ_ONCE如何解决缓存一致性问题? 区别
`is_always_lock_free` 在 macOS 上给出“true”,但“is_lock_free()”给出“false”,为什么?
我正在尝试 C++atomic 的 std::atomic::is_always_lock_free 和 std::atomic::is_lock_free。 我写了一个简单的结构体 A,想知道 A 的原子版本是否是 lock-f...
我正在使用原子(双)比较和交换指令实现无锁机制,例如cmpxchg16b 我目前正在汇编中编写此内容,然后将其链接到其中。但是,我想知道是否...
标准 C++atomic_flag 在调用 notification_one() 时从 wait() 唤醒线程有多“公平”
当调用notify_one()时,是否有关于在atomic_flag上调用wait()的线程被唤醒的顺序的公平性信息。他们是在确切的时间醒来还是......
我一直在按照本文的说明实现无锁数组。目标是使用无锁操作创建一个线程安全、动态调整大小的数组。
如果 std::atomic<T>::compare_exchange_weak 的期望值是非原子操作的返回值,它仍然是原子的吗?
head.load()->next 是否会破坏 while(head && !head.compare_exchange_weak(ptr, head.load()->next)); 中使用的 std::atomic::compare_exchange_weak 的原子性? ?我相信这是...
一直在研究无锁栈。 我正在阅读此链接,弹出功能让我感到疑惑。 根据链接,pop函数实现如下。 int lfstack_pop(_Atomic lfs...
Anthony Williams 的无锁队列(第 7 章)中的 push() 如何分配新节点
我目前正在研究 Anthony Williams 的 C++ concurrency in action (2E),我有很多技术问题,但到目前为止,这个问题是最奇怪的,即使它有效。 #pragma一次 模板<
我一直在尝试在 CUDA 中实现无锁队列,但由于某种原因我的代码出现死锁,特别是当我运行下面的测试用例时。 代码: #包括 #include "stdio.h&
我正在尝试在 mpi RMA 中实现无锁分布式链表。 这是插入函数的代码,它在给定键的节点后插入一个新节点。 void insertAfter(int id, int newVal, int ke...
如果线程 1 运行: this.Field.Flag = false; ... var oldValue = Interlocked.Exchange(ref this.Field, newValue); oldValue.Flag = true; 并且线程 2 看到 oldValue.Flag == true,是否保证...
我是否需要 MemoryBarrier 来增加无锁集合中的索引
我正在尝试实现一个简单而快速的生产者/消费者集合,能够从另一个线程复制并使其尽可能快,因此我没有使用任何锁定
我有一个无锁缓存的算法,我可以证明它没有错误(在一致的内存模型中)。但是在运行时我看到程序失败,这不取决于我使用的内存语义。我有...
我有一个无锁缓存的算法,我可以证明它没有错误(在一致的内存模型中)。但是在运行时我看到程序失败,这不取决于我使用的内存语义。我有...
我正在寻找具有以下属性的线性容器的实现,例如 std::vector 或 std::stack: 操作是线程安全的 没有互斥锁或自旋锁,即使是
在C++中,有一种原子类型std::atomic。这种原子类型可能是无锁的,也可能不是,这取决于类型 T 和当前平台。如果一个类型的无锁实现是
RISC-V 的 C++ 多读取器/写入器无锁 FIFO 队列?
我们公司正在考虑切换到基于 RISC-V 的嵌入式处理器。由于我们的应用程序大量使用队列作为主要的线程间通信系统,因此最好实现...
假设你有两个线程,一个线程创建一个TSX事务,并修改一些数据结构。另一个线程不做任何形式的同步,读取相同的数据结构。是 ...