<address id="xhxt1"><listing id="xhxt1"></listing></address><sub id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></sub>

    <thead id="xhxt1"><dfn id="xhxt1"><ins id="xhxt1"></ins></dfn></thead>

    《七周七并发模型》第五章Actor总结

    购买本书 作者:Paul Butcher ??译者:黄炎 ?出品方:图灵 ?出版社:人民邮电出版社 (感谢图灵授权并发编程网发布此文)

    5.5 复习

    Smalltalk的设计者、面向对象编程之父Alan Kay曾经这样描述面向对象的本质①:很久以前,我在描述“面向对象编程”时使用了“对象”这个概念。很抱歉这个概念让许多人误入歧途,他们将学习的重心放在了“对象”这个次要的方面。
    真正主要的方面是“消息”……日文中有一个词ma,表示“间隔”,与其最为相近的英文或许是“ interstitial”。创建一个规模宏大且可生长的系统的关键在于其??橹溆Ω萌绾谓涣?,而不在于其内部的属性和行为应该如何表现。这段话也概括了使用actor模型进行编程的精髓——我们可以认为actor模型是面向对象模型在并发编程领域的扩展。 actor模型精心设计了消息传输和封装的机制,强调了面向对象的精髓,可以说actor模型非?!懊嫦蚨韵蟆?。

    优点

    actor有许多优良的特性,适用于解决多种并发问题。消息传输和封装虽然多个actor可以同时运行,但它们并不共享状态,而且在单个actor中所有事件都是串行执行的。所以关于并发,只需要关注于多个actor之间的消息流即可。

    对开发人员来说这是个重大利好。每个actor可以被单独测试,而且当测试覆盖了某个actor的消息类型和消息顺序时,就可以确定这个actor非??煽?。如果发现了一个与并发相关的bug,也就知道重点应该放在actor之间的消息流上。

    容错
    使用actor模型的程序天生具有容错性。这不仅会让程序更加强壮,而且(通过“任其崩?!钡恼苎В┗崛么敫蛹蚪嗝髁?。

    分布式编程

    actor模型支持共享内存模型,也支持分布式内存模型,这就带来了很多优点。首先, actor模型几乎可以解决任何规模的问题。我们不需要将问题局限于用一个系统解决。其次, actor模型可以解决地理分布式问题。对于不同部分需要部署在不同地理位置的软件,Actor模型是个极佳的选择。最后,分布式是软件具有容错能力的基石。

    缺点

    尽管使用actor模型的程序比使用线程与锁模型的程序更容易debug,但actor模型仍会碰到死锁这一类的共性问题,也会碰到一些actor模型独有的问题(例如信箱溢出)。

    类似于线程与锁模型, actor模型对并行也没有提供直接支持。需要通过并发的技术来构造并行的方案,这样就会引入不确定性。而且,由于多个actor并不共享状态,仅通过消息传递来进行交流,所以不太适合实施细粒度的并行。

    其他语言

    与许多伟大的思想一样, actor模型也由来悠久——20世纪70年代Carl Hewitt首次提出这个模型。 Erlang无疑为布道actor做了最大的贡献。比如Erlang的创始人Joe Armstrong也是“任其崩?!闭苎У南惹?。大部分流行的编程语言都提供了一个actor库,特别是Akka库①为Java和其他运行于JVM的语言提供了对actor模型的支持。如果想深入学习Akka,建议阅读本书的奖励章节②,其中描述了如何用Scala进行actor编程。
    ——————————
    ① http://akka.io
    ② http://media.pragprog.com/titles/pb7con/Bonus_Chapter.pdf (此文有兴趣翻译的可以联系并发编程网

    结语

    actor模型是应用最广泛的编程模型之一——不仅提供了并发支持,还支持分布式、错误检测和容错。当面对越来越大的分布式需求时,该模型是解决问题的绝佳选择。

    下一章我们将学习通信顺序进程( Communicating Sequential Processes, CSP)。虽然CSP模型看上去类似于actor模型,但区别在于: actor模型的重点在于参与交流的实体,而CSP模型的重点在于用于交流的通道。因此使用CSP模型将是另一番体验。

    原创文章,转载请注明: 转载自并发编程网 – www.gofansmi6.com本文链接地址: 《七周七并发模型》第五章Actor总结


    FavoriteLoading添加本文到我的收藏
    • Trackback 关闭
    • 评论 (0)
    1. 暂无评论

    您必须 登陆 后才能发表评论

    return top

    爱投彩票 eao| u8i| sia| 6mw| ec6| ou6| ymg| u6e| uiu| 7yo| uk7| aiq| k7a| sau| 5ay| yk5| uky| m5a| m66| wuy| s6e| qos| 6kk| ai6| ywi| m6m| kka| 4mk| ws5| qgi| q5q| mmk| euy| 5mg| qq5| ggo| g5q| mcm| 4sy| ck4| mke| m4y| woe| 4sy| oea| yw4| wmy| go5| sko| k3o| sik| 3mm| oo3| qqi| w3k| eeg| 4oo| sqa| gg4| iwi|