KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[M] Prelude to K.O. (2)

[ 5869 查看 / 2 回复 ]

回复: [M] Prelude to K.O. (2)

原帖由 Prz 于 2007-5-11 13:38:00 发表
但是,我们可以注意到CAS消息队列本身结构很简单:
相对于传统的Grid Computing中的MPI消息传递,CAS有一个绝对的优势,就是模块之间内存可以共享(因为处于同一个进程中)。
这样CAS消息传递本身也就能够被极大的优化——所谓一条消息,其实也就是一个指针、4个字节而已(x86结构下)。
因此,实现消息队列也就可以应用另一项同步技术——免锁同步(Lock-free Synchronization)。


实际使用中多数消息都是很简短的,如果每次都传一个指针,同步问题是可能避免,但频繁的内存分配和释放(消息可能是不定长的)则更成问题.

我希望后面的文章能相信阐述一下消息的结构问题.要避免模块之间的耦合,则必须要消息统一化.否则某个模块的消息结构改变,其他发送过此消息的模块也要跟着改变.而消息的统一化不是很简单的,除了一个例外,就是所有消息都使用一个字符串,当然每个模块都要面临字符串的匹配和效率问题.

纯消息处理的架构颠覆了传统的编程思想,许多需要持续完成的工作就不得不利用麻烦的状态机来控制.
比如给日志记录模块发送一个"传送"消息之后,要等待日志记录返回"记录正确"的消息后才能继续下一步,
在等待返回的消息前做什么呢?
* 如果等待,则不符合架构的特性,这段时间可能许多消息不能及时处理,甚至会出现消息死锁.
* 如果处理下一个消息循环,则保存当前运行的状态就要用到状态机.如果连续执行的任务比较多,则会变得很复杂.

总的来说,这种架构比较接近人的思维,在分布式计算或人工智能领域会得到很好的利用.
但也有许多简单的情况会使编程变得更复杂,调试变得更困难.
任何架构都不可能全部都会体现出优点.即使是我很赞赏的COM架构也有其不足.
最后编辑dwing 最后编辑于 2007-05-11 16:05:01
本主题由 管理员 深海蓝空 于 2007/5/13 13:28:46 执行 设置精华/取消 操作
分享 转发
TOP