线性化和可序列化(在Java中)有什么区别?您能否举例说明它们之间的区别或提供引用?

最佳答案

两者的主要区别在于可序列化是全局属性;整个操作/交易历史的属性。 线性化是本地属性;单个操作/交易的属性。另一个区别是线性化性包括实时的概念,而串行化性则不这样:操作的线性化点必须位于其调用和响应时间之间。 (请参阅Tim Harris:事务性存储器,第2版。请参见Herlihy的幻灯片,来自“多处理器编程的艺术”,有关线性化的部分,其文件名为available here,以获取一些示例和证明。
这两个属性的目标是相同的:顺序一致性。从Herlihy的论文中:

引用文献:

  • Harris,Tim,James Larus和Ravi Rajwar:事务性内存,第2版。计算机体系结构综合讲座。 Morgn&Claypool,2010年。ISBN9781608452354。URL:http://www.morganclaypool.com/doi/abs/10.2200/S00272ED1V01Y201006CAC011?journalCode=cac
  • Herlihy,Maurice和Jeanette Wing:线性化:并发对象的正确性条件。 ACM Trans。编郎和系统。卷1990年7月12日第3期,第463-492页。网址
    http://www.cs.brown.edu/~mph/HerlihyW90/p463-herlihy.pdf
  • Papadimitriou,Christos:并行数据库更新的可序列化性。 ACM杂志第26卷。第4期,1979年10月,第631-653页。网址http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-210.pdf
  • Herlihy,Maurice和Nir Shavit:多处理器编程的艺术。 Elsevier,2008年。ISBN978-0-12-370591-4。网址:http://www.elsevier.com/wps/find/bookdescription.cws_home/714091/description#description有关线性化的PPT幻灯片在此处:http://pub.ist.ac.at/courses/ppc10/slides/Linearizability.pptx
  • Attiya,Hagit和Jennifer Welch:顺序一致性与线性化。 ACM交易计算机系统上。 1994年5月12日第2期,第91-122页。网址http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.133.4969&rep=rep1&type=pdf

  • 更多细节:
    如果您真的对此很在意,请阅读介绍定义的论文。对于线性化,这是Linearizability: A Correctness Condition for Concurrent Objects, Herlihy and Wing。它很密集,但值得关注。请注意,在软件事务存储社区中,线性化是否是正确的目标/属性是一个悬而未决的问题。
    可序列化性是关于一组操作/“系统”的结果的结果,该“系统”可表示为所有操作的特定顺序(“好像是按照特定顺序执行...”)。线性化是系统中操作的单个子集的属性...如果一个操作/一组操作在其他操作中看起来像是相对于其他操作在(逻辑)时间的特定时刻出现,则它们是可线性化的。规范的文件是Papadimitriou, The Serializability of Concurrent Database Updates
    在考虑“线性化”时,请考虑“原子操作”。当一组(一组)操作(似乎)相对于系统的其他部分以原子方式发生时,它们是可线性化的。一个常见的表述是“给人一种错觉,即每个操作在调用和响应之间即刻生效。” 线性化性的表述归因于Herlihy,它强调了这是局部属性,而不是全局的其他类型的顺序一致性属性,例如“可序列化”。

    07-24 21:47