01 2015 档案

摘要:这是第五篇的后续,紧接上一篇的末尾,我们把 Windows 和 Linux 下的休眠策略归纳总结一下。我们可以看到,Linux 下的 sched_yield() 虽然包括了 Windows 下的 Sleep(0) 和 SwitchToThread() 的部分功能(图中蓝色框和虚线框所标注的部分),但缺少了上图中两个灰色文字的功能。 阅读全文
posted @ 2015-01-30 22:20 shines77 阅读(4232) 评论(8) 推荐(3)
摘要:由于我最近调整了一下 Jimi 的文件结构,导致出现了一个 LNK4042 的 warning,我并没有很重视,这个 warning 导致出现了一些错误。我调试了几个小时,一开始并没有想到是这个 warning 造成的,以为是我改代码改出来的问题(因为最近做了大量调整),特此记录一下。我在调整代... 阅读全文
posted @ 2015-01-25 12:38 shines77 阅读(2860) 评论(0) 推荐(2)
摘要:这几天研究了一下 disruptor .Net版,由于.Net版跟进不及时,网上只有 v2.10 版。没仔细研究,但可以肯定的是跟最新的Java版 disruptor 3.30 是有不少区别的。我也用这个 2.10 的.Net版本写了跟我们的问题相似的测试程序,得到的结果跟 Java 版的 disruptor 3.30 差不多。我还下载了 C++ 版的,不过看了一下,就扔一旁了,一个原因是版本太低,另一个原因是动不动就 boost,动不动就C++11,我是崇尚轻便、依赖小的,真要用我还不如自己写一个,所以我也懒得用他们来测,我已经在着手把 disruptor 3.3 的原理搬到 C++ 上来。 阅读全文
posted @ 2015-01-14 12:33 shines77 阅读(9925) 评论(27) 推荐(13)
该文被密码保护。
posted @ 2015-01-09 05:38 shines77 阅读(211) 评论(4) 推荐(0)
摘要:上一篇分析了 Sinclair 的 q3.h 的原理,以及根据网友 korall 的提醒,我们可以看到,q3.h 的 push() 前半部分领号的过程是 lock-free 的,这里 lock-free(无锁) 的定义是指假如有一个线程在领号的过程中被无限休眠或崩溃(假设存在崩溃的可能性),也不会造成别的线程在领号的过程中因此而被阻塞。而 push() 的后半部分,即提交成功的确认过程,不是 lock-free 的,而是阻塞的。 阅读全文
posted @ 2015-01-08 14:03 shines77 阅读(12773) 评论(9) 推荐(3)
摘要:无锁队列 第一篇文章末尾我们提到的《无锁队列的实现》(陈皓(hào)),该文末尾提到的“用数组实现无锁队列”,即用 RingBuffer 实现的无锁队列。 阅读全文
posted @ 2015-01-05 09:41 shines77 阅读(16191) 评论(23) 推荐(6)
摘要:平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱。 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角。记得高中时看过的为数不多的长篇小说《穆斯林的葬礼》,作者是:霍达(女),故事描写了两个发生在不同时代、有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”的故事。结构上采取交叉的模式,一章写“玉”,一章写“月”,分别写两代人的命运,手法新颖,别有一番风味,用电影语言来讲,就是平行蒙太奇。用在这里再好不过了,就这么决定了! 阅读全文
posted @ 2015-01-03 23:34 shines77 阅读(8214) 评论(15) 推荐(8)
摘要:起因 某一日,从云风的SkyNet群(QQ群)里知道 DouBan(豆瓣) 上有人喷云风,是从 ”《怎样识别水货程序员》说的是真的吗?” 这个《知乎》帖子开始的,当初也是看了个大概,实在对知乎、豆瓣之类的不太感冒,文字又长,瞄了一下完事。其实我一开始没弄清是在豆瓣还是知乎上喷他,今天才看明白经过。知乎上提到的两个(豆瓣)原帖分别是:《怎样识别水货程序员》和 《怎样识别正品程序员》,这两个原帖我好像看过第一个,今天才认真看了看,原来讨论还挺多的……想了解来龙去脉的可以去看看。 阅读全文
posted @ 2015-01-01 21:24 shines77 阅读(19223) 评论(26) 推荐(10)