本文翻译自LMAX关于Disruptor的论文,同时加上一些自己的理解和标注。Disruptor是一个高效的线程间交换数据的基础组件,它使用栅栏(barrier)+序号(Sequencing)机制协调生产者与消费者,从而避免使用锁和CAS,同时还组合使用预分配内存机制、缓存行机制(cache lin... ...
分类:
编程语言 时间:
2017-06-20 00:20:39
阅读次数:
331
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明: A volatil ...
分类:
其他好文 时间:
2017-06-15 14:15:05
阅读次数:
258
CountDownLatch与CyclicBarrier的一个不同在于,CountDownLatch可以让多个主线程等待,而CyclicBarrier只能让一个Barrier Action等待执行。 见下方示例: ...
分类:
编程语言 时间:
2017-06-14 19:24:58
阅读次数:
140
一个同步辅助类,它同意一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待。此时 CyclicBarrier 非常实用。由于该 barrier 在释放等待线程后能够重用,所以称它为循环 的 barrier ...
分类:
编程语言 时间:
2017-06-13 17:07:12
阅读次数:
181
volatile是java虚拟机提供最轻量级的同步机制。 volatile两个特性:1,保证同步的变量对所有线程是可见的。虽然对所有线程是即时可见的,但是却不保证原子性,也就是不保证线程安全,比如对于创建20个线程,每个线程都执行i++操作,执行100次,但是i输出的结果小于2000。因为一条i++ ...
分类:
编程语言 时间:
2017-06-09 12:39:29
阅读次数:
142
CyclicBarrier简介 cuclicBarrier允许一组线程互相等待,直到到达某个公共屏障点(common barrier point)。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。 CyclicBarrier函数列表 CyclicBarrier数据结构 ...
分类:
编程语言 时间:
2017-06-01 17:51:04
阅读次数:
236
2. 完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物。 我们可以把这些全部设计为对象。 2.1 创建障碍物对象群 对象群保存各种地图上的对象,我们通过对象的属性来判断对象是否可以被穿过或被攻击。 Barrier.js: View Code View Code 2.2 写入地图的数据。 ...
分类:
编程语言 时间:
2017-06-01 13:12:31
阅读次数:
190
1. 安装Redis版本:win-3.0.501https://github.com/MSOpenTech/redis/releases页面有,我下载的是zip版本的:Redis-x64-3.0.501.zip;最好也下载源代码的zip包。将redis解压,如解压到d:\rediscluster\r ...
1、CyclicBarrier的定义 一个同步辅助类,它允许一组线程相互等待,直到到达某个公共屏障点(common barrier point)。就是所有子程序都执行完成之后,开始执行主程序。 执行结果为 2、CyclicBarrier和CountDownLatch的区别 首先看看javadoc中的 ...
分类:
其他好文 时间:
2017-05-22 16:46:38
阅读次数:
187
在JDK 1.5之前,提到并发,java程序员们一般想到的是wait()、notify()、Synchronized关键字等,但是并发除了要考虑竞态资源、死锁、资源公平性等问题,往往还需要考虑性能问题,在一些业务场景往往还会比较复杂,这些都给java coder们造成不小的难题。JDK 1.5的co ...
分类:
编程语言 时间:
2017-05-19 14:30:39
阅读次数:
220