这几天研究了一下 disruptor .Net版,由于.Net版跟进不及时,网上只有 v2.10 版。没仔细研究,但可以肯定的是跟最新的Java版 disruptor 3.30 是有不少区别的。我也用这个 2.10 的.Net版本写了跟我们的问题相似的测试程序,得到的结果跟 Java 版的 disr...
分类:
其他好文 时间:
2015-01-14 13:59:44
阅读次数:
336
int global = 0;
// thread 1
for(int i = 0; i < 10; ++i)
global -= 1;
// thread 2
for(int i = 0; i < 10; ++i)
global += 1;之后global的可能的值是多少(多种可能)?
这个问题考虑的是全局变量global的加减操作不是原子操作,在加减过程中有可能被打断,从而产生...
分类:
编程语言 时间:
2015-01-13 19:48:40
阅读次数:
168
在之前的两篇博客(线程安全的无锁RingBuffer的实现,多个写线程一个读线程的无锁队列实现)中,分别写了在只有一个读线程、一个写线程的情况下,以及只有一个写线程、两个读线程的情况下,不采用加锁技术,甚至原子运算的循环队列的实现。但是,在其他的情况下,我们也需要尽可能高效的线程安全的队列的实现。本...
分类:
编程语言 时间:
2015-01-11 22:47:53
阅读次数:
307
#ifndef _RingQueue_H_#define _RingQueue_H_#include templateclass RingQueue{public: //----------------------------------------------------- // 构造...
分类:
其他好文 时间:
2015-01-11 14:43:13
阅读次数:
172
上一篇分析了 Sinclair 的 q3.h 的原理,以及根据网友 korall 的提醒,我们可以看到,q3.h 的 push() 前半部分领号的过程是 lock-free 的,这里 lock-free(无锁) 的定义是指假如有一个线程在领号的过程中被无限休眠或崩溃(假设存在崩溃的可能性),也不会造...
分类:
其他好文 时间:
2015-01-08 14:59:25
阅读次数:
255
无锁队列
第一篇文章末尾我们提到的《无锁队列的实现》(陈皓(hào)),该文末尾提到的“用数组实现无锁队列”,即用 RingBuffer 实现的无锁队列。
分类:
其他好文 时间:
2015-01-05 10:44:19
阅读次数:
305
为了进行后台计算提供的完全隔离计算方式 不可访问 DOM APIs 不可访问 window object 不可访问 document object 强隔离保证并行计算结果无误(无锁机制)---- 启动 定义Worker对象 var w = new Worker("calc.js"); Worker会...
分类:
Web程序 时间:
2015-01-04 15:14:11
阅读次数:
149
前续一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——地:起因平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱。 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角。记得高中时看过的为数不多的长篇小说《穆斯林的葬礼.....
分类:
其他好文 时间:
2015-01-03 23:43:46
阅读次数:
518
起因 某一日,从云风的SkyNet群(QQ群)里知道 DouBan(豆瓣) 上有人喷云风,是从 ”《怎样识别水货程序员》说的是真的吗?” 这个《知乎》帖子开始的,当初也是看了个大概,实在对知乎、豆瓣之类的不太感冒,文字又长,瞄了一下完事。其实我一开始没弄清是在豆瓣还是知乎上喷他,今天才看明白经过。....
分类:
其他好文 时间:
2015-01-01 22:31:27
阅读次数:
358
概述我实现了两个完全无锁的内存分配器:_nalloc 和 nalloc。 我用benchmark工具对它们进行了一组综合性测试,并比较了它们的指标值。与libc(glibc malloc)相比,第一个分配器测试结果很差,但是我从中学到了很多东西,然后我实现了第二个无锁分配器,随着核数增加至30,测试...
分类:
其他好文 时间:
2014-12-21 12:40:31
阅读次数:
241