目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的艺术 [续] 开篇 这是第五篇的后续,这部分的内容同时会更新和添加在 第五篇:RingQueue(中) 休眠的艺术 一文的末尾. 归纳 紧接上一篇的末尾,我们把 Windows 和 Linux 下的休眠策略归纳总结一下,如下图: 我们可以看到,Linux 下的 sched_yield() 虽然包括了…
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的艺术 [续] 开篇 这几天研究了一下 disruptor .Net版,由于.Net版跟进不及时,网上只有 v2.10 版.没仔细研究,但可以肯定的是跟最新的Java版 disruptor 3.30 是有不少区别的.我也用这个 2.10 的.Net版本写了跟我们的问题相似的测试程序,得到的结果跟 Ja…
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的艺术 [续] 开篇 这两天状态不是很好,我甚至把最新的<鹿鼎记>(梁栋版)快看完了,基本上是躺床上看的,其实不算好看,可能是太无聊了.不过我还是把 disruptor 大致看明白了,也修改了 disruptor 的测试代码,基本接近 RingQueue 的测试了.不过目前的测试结果跟 RingQu…
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的艺术 [续] 无锁队列 第一篇文章末尾我们提到的<无锁队列的实现>(陈皓(hào)),该文末尾提到的“用数组实现无锁队列”,即用 RingBuffer 实现的无锁队列: RingBuffer 是一个很好的东西,用在无锁/有锁队列实在是太棒了,如该文提到的一样,RingBuffer由于使用的是序号(…
概述 我实现了两个完全无锁的内存分配器:_nalloc 和 nalloc.  我用benchmark工具对它们进行了一组综合性测试,并比较了它们的指标值. 与libc(glibc malloc)相比,第一个分配器测试结果很差,但是我从中学到了很多东西,然后我实现了第二个无锁分配器,随着核数增加至30,测试结果线性提高.核数增加至60,测试结果次线性提高,但是仅比tcmalloc好一点. 想要安装,输入命令: git clone ~apodolsk/repo/nalloc,阅读 README文档.…
无锁环形队列 1.Ring_Queue在payload前加入一个头,来表示当前节点的状态 2.当前节点的状态包括可以读.可以写.正在读.正在写 3.当读完成后将节点状态改为可以写,当写完成后将节点状态改为可以读 4.Ring_Queue使用时参照生产者消费者模型,生产者生产(写)一个可用节点,消费者获得(读)队列头节点 Github地址: https://github.com/HITFishily/CandCPP /****************************************…
DPDK 无锁环形队列(Ring) 此篇文章主要用来学习和记录DPDK中无锁环形队列相关内容,结合了官方文档说明和源码中的实现,供大家交流和学习. Author : Toney Email : vip_13031075266@163.com Date : 2020.11.8 Copyright : 未经同意不得转载!!! version : dpdk-2.2.0 文章目录 DPDK 无锁环形队列(Ring) @[TOC] 1. DPDK中的环形数据结构 2. 环形队列:单生产者/单消费者模式 2…
Linux 内核:匠心独运之无锁环形队列 Kernel version Linux 2.6.12   Author Toney   Email vip_13031075266@163.com   Date 2020.11.8   目录 Linux 内核:匠心独运之无锁环形队列 1. 前言 2. Kfifo简介 3. Kfifo初始化 3.1 判断一个数是否为2的幂次方 3.2 求不小于某个数2的整数次幂 3.3 为什么要求2的幂次方呢? 4. Kfifo入队和出队 4.1 Kfifo右侧入队 4…
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http://item.jd.com/12299018.html 本节介绍内存映射文件,内存映射文件不是Java引入的概念,而是操作系统提供的一种功能,大部分操作系统都支持. 我们先来介绍内存映射文件的基本概念,它是什么,能解决什么问题,然后我们介绍如何在Java中使用,我们会设计和实现一个简单的.持久化的.跨程序的消息…
消息队列中间件(Message Queue)相信大家不会陌生,如Kafka.RabbitMQ.RocketMQ等,已经非常成熟,在大大小小的公司和项目中也已经广泛使用. 有些项目中,如果是只使用初步的消息队列功能(比如少量客户端和简单的消息中转),对于追求“简洁美”的程序猿.攻城狮们,实在不愿意部署.维护一个消息队列中间件,那么就自己动手吧,编写几十行代码,嵌入到现有的模块,消息队列功能就能正常运转起来,是不是很有成就感呢? 下面我抛砖引玉,使用nodejs+UDP实现一个简单的消息队列.你可以…