0MQ讲述多线程魔法

 

为什么你想过的所有你所知道关于并发的事情,不是完全神经病的(Insane),就是假的(Bogus)。

并发的定律,e=mc*c。这里并不是爱因斯坦的质能方程。而是 努力 = 代码规模 * (线程冲突碰撞的平方)。

 

 

随线程冲突升级,我们要为些付出指数增长的努力去解决。

工业标准的并发模型基于大型计算的模型。

并发意味着数据在线程间共享,随之需要锁,信号量,临界区;代码通常会失败;复杂,bugs,竞态。这些都令c系数变大。简直是完全神经病的模型。

我们需要一个理想的世界,我们不必为些付出额外的努力。

早在1973年,一种高性能的模型已经被提出,这种模型为我们带来在并发的c系数只为1。

30年来,几乎被忽略掉了。erlang让我们再次想起这种模型。

 

这里注意,所有的线程,进程,cpu核,节点系统都视为box。

没有共享数据,所有inproc,ipc,节点通讯都只使用相同的socket风格api。

 

你的应用应该是这样子的。跨语言跨平台,无锁等其它同步原语,任务各自私有状态,处理消息,只发消息到其它任务。这样就可以扩容到任意的核。

 

https://www.slideshare.net/pieterh/fosdem-2011-0mq?next_slideshow=4

posted on 2017-09-18 15:06  bbqz007  阅读(469)  评论(0编辑  收藏  举报