【发布时间】:2013-08-26 17:06:43
【问题描述】:
我正在阅读"Simple, fast, and practical non-blocking and blocking concurrent queue algorithms" 的论文,我意识到他们假设计算机原子地实现了以下伪代码:
CAS(Q->Tail,tail,<next.ptr,next.count+1>)
其中 Q->Tail 和 tail 是一个指针和一个包含指针和计数器的结构的实例。
我知道 gcc 为 c 中的单字比较和交换提供了几个内置插件。但是,是否可以从 c 中的单个比较和交换(使用 Linux)实现非阻塞原子双重比较和交换?这是实现参考论文伪代码的正确方法吗?
【问题讨论】:
-
既然我不打算买报纸,那
Tail到底是什么?真的是指针加上计数器吗?
标签: c queue nonblocking lock-free