![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并行计算
louhui_2005
这个作者很懒,什么都没留下…
展开
-
JVM伪共享
在解道看到banq发的一个关于Flase sharing的贴子,觉得不错,刚好近期在看Disruptor框架,更加觉得有用,本想只贴连接上来,但防止后面贴被删除情况,故复制到此。 内存缓存系统中基本单元是高速缓存行(Cache lines). cpu会把数据从内存加载到高速缓存中 ,这样可以获得更好的性能,高速缓存默认大小是64 Byte为一个区域,一个区域在一个时间点只允许一个核心...原创 2013-11-07 14:17:43 · 78 阅读 · 0 评论 -
LMAX 的架构(一)
这是一篇关于"The LMAX Architecture"的译文,译者为bonq。 LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). ...原创 2013-11-08 12:42:23 · 221 阅读 · 0 评论 -
LMAX 的架构(二)
接上文:LMAX 的架构(一)即使有IP广播,复制还是需要的,因为IP消息是以不同顺序到达不同节点,主节点提供为其他处理提供一个确定顺序。 格式转换unmarshaler是将事件从其消息格式转换到Java对象,这样才能在业务逻辑处理器中使用,不同于其他消费者,它需要修改ring buffer中的数据以便能够存入这个被转换好的Java对象,这里有一个规则:并发地每次只有一个消...原创 2013-11-08 12:50:58 · 275 阅读 · 0 评论 -
java线程间等待并传递数据
线程间传递数据,有多种方式可以做到,下面列举三种出来。假设有A线程等待并获取B线程执行的结果。1、通过wait/notify方式; A与B共同持有一个锁对象lock,A先获取lock的锁并在其上调用wait方法; B运行,计算出结果后,将结果值保存到一个A可以访问的volatile变量中,并调用lock的notify2、通过SynchronousQueue方式; A与B共同持有一个...原创 2013-08-31 18:24:23 · 463 阅读 · 0 评论