并发面向对象中继承反常现象.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并发面向对象中的继承反常现象1 王生原 杨良怀 袁崇义 杨萍 2 Abstract. 如果不考虑继承性,并发性与对象技术的结合是很自然的。继承反常 (inheritance anomaly )现象是继承性和并发性不相容的主要原因之一。现阶段人们对继承反常现象的认 识有许多模糊之处,出发点不尽相同,形式化的工作也很少。本文认为继承反常这一概念应 有针对性,对不同的 subtyping 关系应考虑其特有的渐增式继承(incremental inheritance )方 法,这有利于把握继承反常现象的实质,而不被各类不同的观点所误导,同时也丰富了“在 并发面向对象语言中应将 inheritance 层次和 subtyping 层次区别对待”这一认识的内涵。在 阐述基本观点后,本文采用范畴论的术语对继承反常现象给出了一种形式化的定义,并对并 发面向对象技术中继承性的建模提出相关的建议。 Key Words: 并发性;面向对象;继承反常;渐增式继承;范畴论 1. 引言 Inheritance (继承)是面向对象理论和技术中主要的概念之一。大多数人已认同这样的 观点:一个程序设计语言,即使它支持对象(Object )和类(Class )的概念,如果不支持 inheritance,那么也不能称为是面向对象语言。继承是类之间的一种层次关系。Superclass 描 述了同类 subclass 的共性(泛化),而 subclass 旨在继承其 superclass 的这种共性,并扩 展其特性(特化)。继承是代码重用(Code Reuse)的重要途径之一。 在一般的面向对象语言中, 类层次自动对应了一种类型层次[WZ88],这样,superclass 和 subclass 之间的关系自然是一种 supertype 和 subtype 之间的关系。这种对应关系难免使 人们在 inheritance 和 subtyping 之间产生模糊的认识。对于大多数顺序的面向对象语言来说, inheritance 和 subtyping 不加以区分几乎不会造成什么影响。但随着把并发性(concurrency ) 引入面向对象语言中(如[Agha86] [America90] [Yonezawa90] ),人们发现 inheritance 和 subtyping 之间并不容易协调,会出现所谓的继承反常(Inheritance Anomaly )现象 [MY93] 。 在并发面向对象语言(COOL)中,对象是很自然的并发单元。对象之间的通信和同步 依靠消息传递,而对象内部的并发活动则是通过共享变量方式进行通信和同步。无论对象之 间还是对象内部的通信和同步,都和同步代码(Synchronization Code )有关。同步代码的主 要作用是对对象内部及其与外界的接口的并发活动(如并发方法,内部线程,对共享变量的 操作等)进行一种约束,即同步约束(Synchronization Constrains )。在inheritance 层次中, 方法(及属性)的增改很可能会破坏这种约束。换句话说,subclass 要兼容其 superclass 的 这种同步约束,很可能必须对相关的 superclass 代码进行实质性修改,而不可能重用它们。 这种现象在 [MY93] 中被首次称为继承反常。在此之前也有许多这方面问题的讨论 ([America87][KL89]),目前仍很受关注([LLNW96][CRR98])。 对于继承反常现象,目前的解决方案主要有两类:(1)设计更强的同步机制[MY93]; (2 )去掉同步原语[Meseguer93][LLNW96]。但这些方法只能有限地减小继承反常的危害, 并不能从根本上解决问题。面对所遇到的困难,有人在考虑是不是存在概念上的误区 [BCC95],目前这仍是一个开放的话题。实际上,除了同步约束,继承反常现象也可能是由 其它情况引起的([ABSB94]),这说明继承反常应属inheritance 本身的特征。 本文认为继承反常这一概念应有针对性,并发面向对象中的继承不能只狭隘地沿用顺序 程序中渐增式的继承(incremental inheritance ),对

文档评论(0)

ygxt89 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档