banq
2013-07-03 21:29

2013-07-03 10:52 "@sinaID49811

"的内容

1978年有人为了平息争论,写了论文证明了用线性的process(线程的模式)和消息传递(事件的模式)是等价的,而且如果实现合适,两者应该有同等性能。 ...

我不能认同这种观点,事件是一个语义词,用事件模式编程,能够更符合日常生活中事件用语,比如XXX发生事件了,事件的发生是随机的,那么响应处理也是随机的,事件一词的背后本质就是异步。

事件编程关键是能够用异步思维处理分析业务,这就能高效率利用硬件,虽然事件落实到硬件或Linux底层都是一样。这根本是两个层次的问题。

打个比喻,快克是感冒药,其成分是乙酰氨基酚,但是“快克”肯定比“乙酰氨基酚”更易于被人接受,易于被人使用。而事件相对线程一词,类似快克相对乙酰氨基酚一样。

从以人为中心的软件角度来看,事件巧妙地打通了业务需求和软件实现之间的鸿沟,既准确表达需求中概念,又能实现高性能并发,充分利用多CPU。

如果从以CPU机器为中心的软件角度看,事件和线程没有什么区别,用脚趾头都能想通,不知为何还有人要去证明什么?无非是想把程序员绕进以CPU机器为核心的僵化思维体系而已。

sinaID49811
2013-07-04 17:59

你的观点和我对Actor模型的描述并无冲突,只是理解角度不一样。

Actor模型的提出和实现主要是为了解决限制服务端应用高并发的难题:过度依靠操作系统内核所提供的API来实现高并发。这种内核API在高并发下回产生大量线程调度,过多用户态与内核的Context切换会试系统性能成线性下降。

Actor模型的实现关键有两点:

1.基于运行时环境自己实现的线程调度(例如Coroutine)来避免大量的内核API调用,那么Context切换也可以自然避免。

2.避免使用共享内存来实现信息共享(上文有描述)。

banq
2013-07-04 20:52

2013-07-04 17:59 "@sinaID49811

"的内容

你的观点和我对Actor模型的描述并无冲突,只是理解角度不一样。 ...

呵呵,我以为你是转发的,我们角度不同,不过你的角度更经典classic,有学院风格,我的好像是有点"野路子",但是个人感觉更实用些,不过初学者可能不太容易理解。

2Go 上一页 1 2