计算器sequence超过 Long.MAX_VALUE怎么办?
什么情况?
batchEventProcessor.getSequence().set(Long.MAX_VALUE);
Thread thread = new Thread(batchEventProcessor);
thread.start();
//for(long i=0;i<Long.MAX_VALUE;i++) {
//ringBuffer.publish(ringBuffer.next());
ringBuffer.forcePublish(Long.MAX_VALUE);
后续batchEventProcessor的sequence无法继续+1了。
不懂用法,batchEventProcessor是放入Event handler的,一般没有那么多Handler吧,几个几十个就不得了。
"生产者和消费者,这就具备了资源争夺的前提,这两个线程一般彼此守在队列的进出两端,表面上好像没有访问共享资源,实际上队列存在两个共享资源:队列大小或指针.
因为一个CPU只能访问(写)自己高速缓存区中数据,相当于给这个数据加锁,那么另外一个CPU同时访问前一个的高速缓冲中同样数据时将会被锁定不能访问。
尽管两个线程是在写两个不同的字段值,也会因为双核CPU底层机制发生伪装的共享,并没有真正共享,其实还是排他性的独享。"
[该贴被pingyuyue于2012-03-20 09:20修改过]
false shareing 不同机器机器缓存行的大小可能不一样
[该贴被pingyuyue于2012-03-18 10:36修改过]
"逻辑处理完毕后结果输出到output Disruptor后又是怎么给到客户端的?"---------好像没有回答。
浏览器用户如何取结果?
这是一个异步返回的问题,可见这个帖子:
http://www.jdon.com/46042/5#23144284