为什么你想过的所有你所知道关于并发的事情,不是完全神经病的(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