lock-free 相关问题

用于在不使用锁的情况下同步多线程环境或其他形式的分布式系统的方法和算法的总称。

Golang中如何使用CAS实现无锁切片追加?

我尝试使用sync.Map + CompareAndSwap来实现无锁并发切片追加,但失败了。 我注意到记录“n”重复出现,但我不明白为什么。 去游乐场 功能主要...

回答 1 投票 0

意外的线程间发生在宽松的内存排序关系之前

我正在实践 C++ 并发,在尝试理解清单 5.12 时遇到了问题,如下所示(GitHub 代码示例)。我明白为什么以下内容应该在以下情况下起作用:

回答 1 投票 0

无锁圆形数组

我正在考虑实现一个无锁循环数组。一个问题是以无锁方式维护头指针和尾指针。我想到的代码是: int 循环增量AndGet(

回答 5 投票 0

具有多个存储的内存顺序

考虑下面的例子。假设屏障初始化为 0。 有一个生产者线程和两个消费者线程不断检查屏障。如果设置了障碍,它们就会减少 runcnt...

回答 1 投票 0

c++11 2 线程无锁队列

除了主线程之外,我还有一个线程接收数据并将其写入文件中。 std::queue> 数据队列; std::mutex 互斥体; void setData(const std::vecto...

回答 2 投票 0

std::atomic<int> 与与本机单词对齐的 int 变量,哪个更好?

#包括 #包括 对齐(sizeof(void*)) int n1; std::atomic n2; int main() { std::thread 线程[32]; for (自动&线程: 线程) {

回答 1 投票 0

无锁队列在 C 性能中计算素数

我尝试使用具有无锁队列的多线程来获得最佳性能来计算素数,而无需编辑朴素的素数检查函数,并且最多仅需要 1.8MB 的 RAM 空间。 关于...

回答 1 投票 0

如何在C/Linux中实现双字比较和交换?

我正在阅读论文《简单、快速、实用的非阻塞和阻塞并发队列算法》,我意识到他们假设计算机实现了以下功能

回答 2 投票 0

这段代码中使用Interlocked.Exchange写入的易失性读取值是否存在线程安全问题? [重复]

类任务跟踪器 { 私有易失性 ConcurrentBag _bag = new(); 公共异步任务 WaitAllAvailableAsync() { 等待 Task.WhenAll(Interlocked.Exchange(ref _bag, n...

回答 1 投票 0

为什么许多无锁链表的实现都假设列表中的项是唯一的?

我正在基于此存储库和多处理器编程艺术一书的第 9.8 章在 C 中实现我的无锁链表。我认为它们是基于哈里斯的论文。我...

回答 1 投票 0

linux 内核中的 WRITE_ONCE 和 READ_ONCE

有人可以解释一下WRITE_ONCE和READ_ONCE的用法吗? 并且 WRITE_ONCE 在内部使用了 volatile 限定符。为什么? WRITE_ONCE和READ_ONCE如何解决缓存一致性问题? 区别

回答 1 投票 0

`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...

回答 1 投票 0

原子操作需要硬件支持吗?

最近在阅读无锁编程时,遇到了“原子操作”。我开始深入研究它。所有链接都解释了如何编写原子操作及其用法...

回答 2 投票 0

标准库中是否支持CAS等无锁操作?

我正在使用原子(双)比较和交换指令实现无锁机制,例如cmpxchg16b 我目前正在汇编中编写此内容,然后将其链接到其中。但是,我想知道是否...

回答 2 投票 0

标准 C++atomic_flag 在调用 notification_one() 时从 wait() 唤醒线程有多“公平”

当调用notify_one()时,是否有关于在atomic_flag上调用wait()的线程被唤醒的顺序的公平性信息。他们是在确切的时间醒来还是......

回答 3 投票 0

无锁动态调整数组大小实现的问题

我一直在按照本文的说明实现无锁数组。目标是使用无锁操作创建一个线程安全、动态调整大小的数组。

回答 0 投票 0

如果 std::atomic<T>::compare_exchange_weak 的期望值是非原子操作的返回值,它仍然是原子的吗?

head.load()->next 是否会破坏 while(head && !head.compare_exchange_weak(ptr, head.load()->next)); 中使用的 std::atomic::compare_exchange_weak 的原子性? ?我相信这是...

回答 2 投票 0

这个无锁堆栈的 pop 函数中的 free() 安全吗?

一直在研究无锁栈。 我正在阅读此链接,弹出功能让我感到疑惑。 根据链接,pop函数实现如下。 int lfstack_pop(_Atomic lfs...

回答 1 投票 0

Anthony Williams 的无锁队列(第 7 章)中的 push() 如何分配新节点

我目前正在研究 Anthony Williams 的 C++ concurrency in action (2E),我有很多技术问题,但到目前为止,这个问题是最奇怪的,即使它有效。 #pragma一次 模板<

回答 1 投票 0

在 CUDA 上实现无锁队列时出现死锁

我一直在尝试在 CUDA 中实现无锁队列,但由于某种原因我的代码出现死锁,特别是当我运行下面的测试用例时。 代码: #包括 #include "stdio.h&

回答 0 投票 0

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