WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(4):阶段性总结 阅读

适合C# Actor的消息执行方式(4):阶段性总结

 2010-09-30 20:50:18 来源:WEB开发网   
核心提示: 其实这可能也是基于Actor模型的程序架构方式还不为人熟悉的缘故,其实“消息总线”和“Actor模型”间的关系……不大,适合C# Actor的消息执行方式(4):阶段性总结(8),其相似性大概也只有“消息传递

其实这可能也是基于Actor模型的程序架构方式还不为人熟悉的缘故。其实“消息总线”和“Actor模型”间的关系……不大,其相似性大概也只有“消息传递”这个特性而已。但是,在Actor模型中,消息是Actor对象间通信的唯一方式。Actor模型在使用时,内存中可能产生成千上万个Actor对象,它们互相发送消息产生交互。同时,Actor可以随时被创建出来,用完后又可以随时丢弃,因此Actor之间的通信无法“预先指定”。而“消息总线”需要在运行之前进行“注册”,然后它可以控制一条消息的Subject(即目标)。如果使用消息总线来实现Actor模型的话,则必须在Actor对象创建出来以后“注册”到消息总线,然后在Actor销毁之后“解开”。这又要求消息总线拥有高效的“注册”和“解开”操作,还必须完全是线程安全的。

正是这个原因,Actor模型在使用时一般都是得到对方的引用并“直接”发送。而且,会把自己作为消息的一部分传递过去,这是为了让对方可以“直接”回复,这带来了程序设计过程中相当的灵活性。当然,这条消息可能会暂时放在Actor的队列中,等Actor空闲时再执行。这又是Actor模型的又一个特性:对于单个Actor来说,消息的执行完全是线程安全的。这大大简化了并行程序设计的难度,也是它与“共享内存”这种并行程序设计方式的区别。如果使用消息总线来实现Actor模型,它可以保证向一个Subject快速发送两条消息后,它们被依次执行吗?

因此,如乒乓测试这种简单的消息传递示例,可以使用消息总线来实现,而复杂的场景就不合适了。在下一篇文章中,老赵会使用Actor模型来实现一个相对复杂的示例:网页小爬虫。在添加功能的过程中,您一定可以更好的了解Actor模型的使用方式,以及它在并行程序设计时的优势。

出处:http://www.cnblogs.com/JeffreyZhao/archive/2009/07/20/message-execution-model-for-c-sharp-actor-4-mid-stage-conclusion.html

上一页  3 4 5 6 7 8 

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接