多线程无锁队列的实现

本文介绍了多线程无锁队列的概念,它通过使用CPU层面的CAS(Compare & Set/Swap)原子操作,确保在多线程环境下队列元素的有序存取。CAS操作在Windows和Linux上都有API支持,并在C++11中得到实现,是实现无锁队列的关键。
摘要由CSDN通过智能技术生成

一、什么是多线程无锁队列?

多线程无锁队列还是有锁的,只不过是用了cpu层面的CAS原子操作,用到这个操作,只需要在取队列元素和添加队列元素的时候利用CAS原子操作,就可以保证多个线程对队列元素的有序存取;


二、什么是CAS操作?

CAS = Compare & Set,或是 Compare & Swap;

在windows和Linux平台均有系统api函数,同时在c++11中也有实现;

//下面这个函数操作在CPU层面是原子操作,这是实现无锁队列的基础;

//这个函数的意思是:只有当dest的只和accum的值相等的时候,才将newval赋值给accum;

//到现在你还是无法理解,为什么这个操作就可以实现多线程对队列元素的有序操作了呢?

bool compare_and_swap ( int *accum, int *dest, int newval)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值