无锁队列

简介: 转载:http://hi.baidu.com/ah__fu/blog/item/9c5b1236934f84240b55a92b.html 下面是他写的无锁队列的文章: Michael &Scott 无锁队列 C++ 实现: http://www.cnblogs.com/napoleon_liu/archive/2010/08/07/1794566.html    这个MS-Queue实现了安全的多个线程入队,多个线程出队。

转载:http://hi.baidu.com/ah__fu/blog/item/9c5b1236934f84240b55a92b.html


下面是他写的无锁队列的文章:

Michael &Scott 无锁队列 C++ 实现: http://www.cnblogs.com/napoleon_liu/archive/2010/08/07/1794566.html

   这个MS-Queue实现了安全的多个线程入队,多个线程出队。不过因为阶段需要new出来,会有一点影响性能。

GCC 之 cas和cas2:http://www.cnblogs.com/napoleon_liu/articles/2006428.html

   piboye同学实现了原子的比较交换操作。如果是GCC4以上,有福了,GCC的内置函数就有。

   原理上来说,cmpxchg8b这个指令实现了原子的比较和交还。但前面为什么要加LOCK呢?

   LOCK是一个指令的描述符,表示后续的指令在执行的时候,在内存总线上加锁。总线锁会导致其他几个核在一定时钟周期内无法访问内存。虽然总线锁会影响其他核的性能,但比起操作系统级别的锁,已经轻量太多了。

    关于LOCK,这篇帖子讲得很好:lock指令的秘密, http://ooooooo.blogbus.com/logs/1357939.html

多读多写 无锁 lifo 队列:http://www.cnblogs.com/napoleon_liu/archive/2011/04/06/2006547.html

 

    再提供一个template的版本,就更完美了。

目录
相关文章
|
Java Unix 程序员
【OS Ctags】Vim 代码阅读工具 Ctags
【OS Ctags】Vim 代码阅读工具 Ctags
306 0
【OS Ctags】Vim 代码阅读工具 Ctags
|
存储 分布式计算 Hadoop
Hadoop节点数据副本
【5月更文挑战第16天】
221 4
|
消息中间件 监控 调度
Celery与RabbitMQ的结合【Python】
【8月更文挑战第18天】 Celery与RabbitMQ结合是构建高效Python分布式系统的利器。Celery作为分布式任务队列,支持任务调度与结果管理;RabbitMQ则确保了消息的可靠传递。二者联用不仅提升了系统的异步处理能力,还增强了其扩展性与可靠性。通过简单的安装与配置,即可实现任务的异步执行与调度,同时利用监控工具优化性能并确保安全性。这种组合适用于需要处理大量异步任务的应用场景,极大地简化了分布式系统的设计与实现。
使用高性能服务器训练StableDiffusion——人物模型.safetensors
使用高性能服务器训练StableDiffusion——人物模型.safetensors
191 0
|
编解码 监控 Linux
进程状态究竟是什么?在Linux操作系统中具体存在哪些进程状态?
进程状态究竟是什么?在Linux操作系统中具体存在哪些进程状态?
330 0
|
存储 缓存 NoSQL
如何解决数据热点问题
如何解决数据热点问题
|
消息中间件 存储 Dubbo
真的好用吗?鲜有人提的 RabbitMQ-RPC模式
真的好用吗?鲜有人提的 RabbitMQ-RPC模式
409 0
|
Linux
嵌入式 V4L2 应用编程(1):抓取 uvc camrea 图像
嵌入式 V4L2 应用编程(1):抓取 uvc camrea 图像
591 0
|
缓存 网络协议 安全
Linux工具篇-NFS多客户端文件一致性探索
文件锁是文件系统的最基本特性之一,应用程序借助文件锁可以控制其他应用对文件的并发访问。NFS作为类UNIX系统的标准网络文件系统,在发展过程中逐步的原生支持了文件锁 (
1857 0
Linux工具篇-NFS多客户端文件一致性探索