没有合适的资源?快使用搜索试试~ 我知道了~
通过多线程程序彼得罗·费拉拉引用此版本:皮埃特罗·费拉拉。通过对多线程程序的抽象解释进行静态分析。软件工程-工程[cs.SE]2009年,第十理工学院。英语。NNT:电话:00417502HAL ID:电话:00417502https://pastel.archives-ouvertes.fr/tel-004175022009年9月16日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaireTHese呈现给奥林匹克体育馆要获取的标题奥林匹克技术学院科学系主任计算机科学学科通过艾特罗·费拉拉2009年5月22日通过抽象解释对多任务软件进行静态分析通过多线程程序曼努埃尔·赫梅内吉尔多总统西班牙马德里政治大学教授报告员Manuel Hermenegildo西班牙马德里政治大学教授赫尔穆特·塞德尔德国慕尼黑工业大学教授埃里克·古博法国CEA研究总监弗朗切斯科·洛戈佐美国微软研究院研究员Radhia Cousot博士生导师法国CNRS/ENS研究总监阿戈斯蒂诺·科尔特斯意大利威尼斯Ca' Foscari大学教授-R&SM&E这篇论文的目的是对用Java编写的多个程序进行静态分析。multitaexe程序在并行中切割多个ta。 这些任务通过共享内存隐式通信,并在监视器(原始设备)上同步。通知等。 ... ... )。 几年前,具有双处理器的archi-V架构开始以低廉的价格在市场上销售。今天,几乎所有的计算机都至少有两个内核,目前的市场趋势是在每个芯片上放置越来越多的处理器。这种演变在编程领域有很大的不同,因为它要求开发人员在一个地方实现多个程序。 大多数常见的编程语言(如Java和C#)都支持multit a che。静态分析的目的是计算有关程序行为的信息,从mani e re conser v到i ve和automatic。静态分析的一个应用是开发帮助程序老化的工具。有几种静态分析方法是不相关的。 我们将看到抽象解释的框架,这是一种数学理论,它允许我们完成程序语义的正确近似。这种方法还没有被广泛的编程语言所使用静态gn风险他们可能会与不同的房地产和不同的职业养老金进行互动。价格是。 在过去的几年里,许多技术人员已经解决了这个问题,但他们还没有成功地应用它来给工业软件带来错误。这些分析器的优势在于,大部分分析都可以用于验证多个特定的对象使用不同的风险域可以避免更快但更准确的分析,或更慢但更准确的分析。在这篇论文中,我们提出了一个用于多个程序的gnric分析器的设计。最重要的是,我们完成了mode'm'moire,称为e'happens- befo r eMemory模型。然后,我们将这个mod和记忆近似为一个可计算的语义。 mods和memoir在multit程序执行期间终止允许的行为。从这个特殊的mode'm'moirer的(非正式的)完成开始,我们完成了一个语义,它根据这个mode'm'moire构造了所有有限的执行。多重程序的一个执行是由一个函数写的,该函数将ta与e状态的s序列(或迹线)相关联。 我们展示了如何构造一个可计算的抽象语义,我们展示了这个分析的结果的实际校正。然后,我们完成并近似于一个新的和适当的(或适当的)。由多重原因引起的终结性的非承载,即那些在执行不同的读取指令期间的任意隔行。最重要的是,一个多任务程序的非终结性以几个操作之间的差异结束。如果两个操作由于在内存中读取或写入的值而导致不同的行为不是终结者。我们在两个阶段中近似这个特征:在第一阶段,在时间上,对于每个tache,我们对在给定程序点e处可以写入同一部分记忆的(抽象)值进行分组。在第二个时间里,我们总结了所有可能被写在平行E中的价值观,同时提醒自己看起来像是可以看到它们被写出来的东西。在第一个Niv水在这个例子中,我们引入了弱f终结论的新概念。 我们还提出了其他方法来削弱终结论的适当性,例如通过轨迹和状态的投影,然后我们完成了这些削弱的全球层次。 我们还研究了关于给定的acces的冲突的本质是如何消除程序的终结性的。我们将这个框架从理论上应用到Java。 特别是r,我们根据它的spe规范,完成了Ja v a的对象语言的语义。然后,我们近似这个语义,以便只存储分析多个程序所需的信息。这种抽象的核心是别名分析,它近似资源以识别任务,在内存中分割访问,并检测两个任务何时具有公共监视器,以推断代码的哪些部分不能并行执行上面所述的g n que分析仪并没有完全植入e,在一个叫做e he c kmate的地方。因此,他是第一个用Java编写的多重程序的g n rique分析器。给出了初步结果并进行了详细分析。特别是r,我们研究了分析在应用时的决策。有一些常见的并发编程技巧,以及其他一些例子。 我们还观察了分析在应用于心理应用时的表现,以及在众所周知的研究实例中的表现。这个过程的另一个贡献是一个名为Clousot的g n rique e xistant分析器的扩展,它允许验证内存缓冲区的非边界。 事实证明,这种分析是在工业计划的规模上进行的,而且是准确的。总之,我们认为这是一个静态分析器的应用。这是一种工业和xistant方法,用于检测和提供一种感觉良好的实际交互,这表明了这种方法在开发对开发人员有用的工具方面的力量。RiasuntoL’obiettivo di questa tesi e` di presentare un’analisi statica generica per programmi多线程。一 个 多 线 程 程 序 esegue moltepplici 任 务 , chiamati 线 程 , 在 paralelo 。 I threadcommunicano implicattravente attraverso a memoria condivisa , e si signizanoattraverso monitor,primal wait-notify,等等.优质的双核音响架构出现在市场上的prezzi内容alcuni anni fa; oggi practicamenti tutti i计算机音响系统al- meno双代码。市场的趋势是增加多核的数量,如果CPU上出现内核数量,内核数量总是会增加。Alcunenu ovesfidesonostate introdotte da questa rivoluzione multicore a livello dilinguaggi di programmazione,dal momento che gli sviluppatori软件必须实现多线程编程。探索编程和支持的模式dalla maggior parte dei lin-现代编程如Java和C#的指南。分析静态和计算自动化的范围在保守的方式是一系列的信息和行为,一个程序的节奏;一个应用程序和一个结构的有效性,一个在questo campo svariati approcci sono statiproposti:nel corso della tesi将看到'seguita le teoria dell在分析编程语言的内在变化时,要成功地使用语言学和语言学Gli analizatori generici posessere instanziati condiversi domini numerici e appli-catias variateproprieta'. 在工业竞争中,国家的中心地位是一种方法,而国家的中心地位是一种成功的手段。 Il loro punto di forza e il riutilizzodella maggior parte dell 'alizzatoreperverificaremolteppliciproprieta',el'utiutilizzodididiversidomininumerici允许你分析我的圆周率,oppurepiu'指定我的圆周率u'lente.Nel corso di questa tesi presenteremo a analizzatore generico per programmi多线程.在记忆发生之前,记忆的模型就已经发生了,因此,记忆的语义学是可以计算的。多线程程序的存储器定义行为质量模型在执行过程中是一致的。从记忆模型的非正式定义开始--在此之前,introdurremo una semantica che cosstruisca tutte le esecuzionifinite che rispetino tale modello di memoria;在竞 争的故 事中, 一个 "esecuzione e'rappresentatacomme une fun-他 把 它 与 一 个 故 事 联 系 在 一 起 , 这 个 故 事 讲 述 了 一 个 故 事 。Introdurremoinfineunasemanticaastrattachepuruo'esserecalcolata,provandonelacor-rettezza consultación.一个新的属性'focalizzata sui behaviormenti non deterministici causati dall'esecuzionemultithread(ad esempio dall'interinstarsi arbi- trario duran 首先,它是不确定的--多线程程序的定义是由电子执行的。一个方案-非决定性的,是由于各种各样的责任行为造成的,这些责任行为是从价的原因,是从价的原因。Astrarremo quindi tale proprieta 'su duelivelli:每一根线都有一个最初的仪式,它的价值是通过书写苏拉或给达拉记忆的条件来实现的。一个人的价值,一个人的价值。因此,首先,我看到了天体的定义,这是一个决定论的概念。比例五种不同的形式'di rilassamento ditaleproprieta',特别是proiettandolasuunsottoinsiemedelletraciediesecuzionee degli stati,定义了一个复杂的层次。 作为数据竞赛的存在影响着程序的决定性。Tuttoquesto lavoro teorico将看到'quindi applicato a programmi Java. 在特定的定义中-niremo 一 个 语 义 结 构 的 语 言 Java 字 节 码 Seguendo sua specifica. Quindiloapprosimeremo以天文学的方式提供信息,以丰富多线程程序的分析。这是一个很好的例子,说明每一个锅的记忆识别和各种线程,每一个控制的访问,每一个锅的记忆签证条件,当到期线程是永远安全的。没有一个人是监督者,也没有一个人是有资格的法典当事人,没有一个人是被引导的 。 L’analizzatore Riporteremo e studiere- mo approfonditamente i risultatisperimentali:在特殊情况下,将看到'studiata分析的准确性,当使用它的共同模式的规划一致性这是一个很好的例子,说明了一个渐进式的应用程序和一个隐含的基准测试最后的贡献,以tesi sara '的概念,一个分析一般工业esi- stente(Clousot)所有'analisidegli accessi e ff ettuati tramite puntatori diretti alla memoria.在最后一部分中,我们将介绍对工业法典的实用兴趣的一般分析的应用,以及对每个恶意软件所使用的结构的全范围方法的探索。摘要本文的目的是对Java多线程pro-gram进行一般静态分析。多线程程序并行执行多个任务(称为线程)。公共线程隐式地跨共享内存进行通信,并在监视器、wait-notify基元等上进行同步几年前,双核架构开始以低廉的价格在广泛的市场上销售。今天,几乎所有的计算机都至少是双核的。多核,即将越来越多的内核放在同一个CPU上是CPU市场的当前趋势这场多核革命也给编程带来了新的挑战,要求开发人员简单地编写多线程程序。大多数常见编程语言(如Java和C#)都支持多线程静态分析的目的是以安全和自动的方式计算有关程序执行的行为信息。静态分析的一个应用是开发帮助调试程序的工具。在静态分析领域,已经提出了许多不同的方法。我们将遵循抽象解析的框架,这是一个允许定义和合理近似程序语义的数学理论。这种方法已经被广泛应用于编程语言。一般分析器的基本思想是开发一个可以插入各种数值域和属性的工具。在过去的几年里,许多工作都解决了这个问题,并成功地应用于调试工业软件。这些分析器的优势在于,分析的大部分内容可以重新使用,以便检查严重的属性。数值域的使用允许更快和更不精确或更慢和更精确的分析。本文介绍了多线程程序通用分析器的设计。首先,我们以定点形式定义了发生在记忆之前的模型,并使用可计算语义对其进行抽象。内存模型定义了在多线程程序执行期间允许的行为。从发生在内存模型之前的(非正式)定义开始,我们定义了一个语义,该语义构建了遵循该内存模型的所有有限执行。多线程程序的执行被表示为将线程与状态跟踪相关联的函数我们展示了如何设计可计算抽象语义,并以形式化的方式证明了结果分析的正确性。然后,我们定义并抽象了一个新的性质,重点是非确定性行为。由于多线程,例如在执行diff erent thre-ads期间的任意首先,多线程程序的非确定性被定义为执行之间的差异。如果两个执行由于从共享内存读取和写入的值而表现出不同的行为,则该程序不是确定性的。在第一步中,我们收集每个线程可以写入共享内存给定位置的(抽象)值在第二个层次上,我们总结了所有并行编写的值,同时跟踪可能已经编写了它的线程集。在第一个层次上,我们引入了弱决定论的新概念。我们提出了其他方法来放松确定性属性,即通过投影轨迹和状态,并定义了一个全局层次结构。我们正式研究了数据种族的存在如何影响程序的决定性。我们将此理论框架应用于Java。特别地,我们定义了遵循其规范的字节码语言的具体语义。然后,我们对它进行抽象,以跟踪分析多线程程序所需的信息。核心是对近似引用的别名分析,以便识别线程、检查对共享内存的访问,并检测两个线程何时具有公共监视器,从而导致代码的哪些部分不能并行执行。上面描述的通用分析器已经完全实现,导致了第一个Java多线程程序的通用分析器--heckmate我们报告并深入研究一些实验结果。特别是,我们分析了当应用于并发编程的一些常见模式和一些案例研究时,分析的准确性,以及当应用于增量应用程序和一组众所周知的基准测试时,分析的性能。本论文的另一个贡献是将现有的通用工业分析仪Clousot扩展到过度运行时的电量检查。这表明这种分析是可扩展和准确的。总之,我们提出了一个现有的、工业的和通用的静态分析器在一个实际感兴趣的属性上的应用,显示了这种方法的强度,以便为开发人员开发有用的工具。确认文件首先,我要感谢我的博士顾问Radhia Cousot和Agostino Cortesi,他们向我介绍了抽象解释,并在整个论文过程中大力支持我的工作。他们的鼓励、建议和热情对我很有帮助。Manuel Hermenegildo和Helmut Seidl同意担任我论文的审稿人:我为此感到自豪,他们花时间阅读、评论和讨论我工作的关键点,我对此深表感谢。我还要感谢埃里克·古博在我的陪审团中扮演的角色。我认识弗朗切斯科·洛戈佐大约五年前。在那一刻,我被他的激情和他强大的原则所震撼。他作为一名年轻研究人员的热情感动了我。我很高兴和荣幸成为他在微软研究院的实习生之一,并有他在我的陪审团。对于所有这些事情,我特别感谢他。Patrick Cousot DeserV特别感谢他的伟大作品。他在学校的课程Supe rieure是学习抽象解释最深刻概念的最佳方式。我要感谢我在论文期间遇到的Cousots团队的所有现任和前任成员:首先是Guillaume Capron和Elodie-JaneSims,他们是我在理工学院的共同博士,还有Julien Bertrane、Bruno Blanchet、Liqian Chen 、 Je r me Feret 、 Laurent Maubo r gne 、 Antoine Min e 、 D a vidMonniaux、X a vier R iv al和A x el Simon。我还要感谢我所有的朋友,特别是亚斯米娜、尼古拉斯、塞萨尔、卡罗莱纳和中国。这是不可能记住他们所有人,所以我选择只引用那些谁是在我的博士辩护。这些感谢延伸到我所有的其他朋友。我特别感谢我的家人,他们在我的一生中一直支持我,在我攻读博士学位的三年里。特别是,我想提到我的母亲Luisella,我的父亲Pino,我的兄弟Jacopo,和我的祖母Lidia。最后但并非最不重要的是,我最深切的感谢弗朗西斯卡,她强烈鼓励和支持我和我的工作。一起在巴黎度过的时光将是我一生中最美好的回忆之一内容1简介11.1动机。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...2多核架构:为什么、在哪里、何时 . . . . . . . . . . ...21.2多线程 . . . . . . . . . . . . . . . . . . . . . . . . . . ...41.1.3静态分析 . . . . . . . . . . . . . . . . . . . . . . . . . . ...41.2背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...51.2.1内存模型 . . . . . . . . . . . . . . . . . . . . . . . . . ...5多线程程序的静态分析 . . . . . . . . . . . ...61.2.3通用静态分析仪。 . . . . . . . . . . . . . . . . . . . . ...71.3贡献。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...71.3.1发生在记忆之前的模型的静态分析 . . . . ...71.3.2多线程程序的确定性。 . . . . . . . . . . . ...81.3.3Java多线程程序的通用静态分析器 . ...81.3.4工业案例研究:不安全代码 . . . . . . . . . . . . . ...81.4论文概述 . . . . . . . . . . . . . . . . . . . . . . . . . . ...92初步112.1评级。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...112.1.1集。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...112.1.2偏序和格。 . . . . . . . . . . . . . . . . . . . ...122.1.3功能。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...122.1.4固定点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...132.1.5痕迹。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...142.2抽象解释。 . . . . . . . . . . . . . . . . . . . . . . . . . ...142.2.1伽罗瓦联络。 . . . . . . . . . . . . . . . . . . . . . . . ...152.2固定点近似 . . . . . . . . . . . . . . . . . . . . . ...162.2.3加宽。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...162.3运行示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...173记忆前发生模型213.1内存模型。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...213.1.1示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . ...223.2发生在记忆之前的模型。 . . . . . . . . . . . . . . . . . . ...233.2.1静态推理 . . . . . . . . . . . . . . . . . . . . . . . ...243.2.2示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...253.3多线程混凝土语义。 . . . . . . . . . . . . . . . . . . . ...253.3.1假设 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...25ii内容3.3.2线程划分具体域。 . . . . . . . . . . . . . ...263.3.3单步函数 . . . . . . . . . . . . . . . . . . . . . . . ...283.3.4固定点语义。 . . . . . . . . . . . . . . . . . . . . . . . ...303.5启动线程。 . . . . . . . . . . . . . . . . . . . . . . ...323.3.6示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...323.4多线程抽象语义 . . . . . . . . . . . . . . . . . . . . ...333.4.1假设 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...333.4.2线程分区抽象域 . . . . . . . . . . . . . . ...353.4.3上界运算符。 . . . . . . . . . . . . . . . . . . . . ...354.4偏序运算符。 . . . . . . . . . . . . . . . . . . . . . ...363.4.5抽象函数。 . . . . . . . . . . . . . . . . . . . . . ...413.4.6步函数。 . . . . . . . . . . . . . . . . . . . . . . . . . . ...423.4.7固定点语义。 . . . . . . . . . . . . . . . . . . . . . . . ...433.4.8启动线程。 . . . . . . . . . . . . . . . . . . . . . . ...473.4.9示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...473.5相关工作。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...473.6讨论。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...496.1线程标识符。 . . . . . . . . . . . . . . . . . . . . . . . . ...493.6.2监视器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...493.6.3多线程程序的模块分析。 . . . . . . . . . ...494多线程程序514.1分析多线程程序。 . . . . . . . . . . . . . . . . . . . ...514.1.1数据竞赛 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...514.1.2执行模式。 . . . . . . . . . . . . . . . . . . . . . . . ...524.1.3示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . ...524.2句法和具体语义。 . . . . . . . . . . . . . . . . . . . . . ...534.2.1语法。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...534.2.2混凝土域。 . . . . . . . . . . . . . . . . . . . . . . . . .534.2.3转移功能。 . . . . . . . . . . . . . . . . . . . . . . . . ...544.2.4示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . ...54每个线程的值(抽象1)。 . . . . . . . . . . . . . . . . ...544.3.1抽象域(第一级) . . . . . . . . . . . . . . . . . . ...544.3.2上界运算符。 . . . . . . . . . . . . . . . . . . . . . ...554.3.3抽象函数。 . . . . . . . . . . . . . . . . . . . . . . ...554.3.4转移功能。 . . . . . . . . . . . . . . . . . . . . . . . . ...584.3.5示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...594.4只有一个值(抽象2) . . . . . . . . . . . . . . . . . . . . . ...604.4.1抽象域(二级)。 . . . . . . . . . . . . . . . . ...604.4.2上界运算符。 . . . . . . . . . . . . . . . . . . . . . ...604.4.3抽象函数。 . . . . . . . . . . . . . . . . . . . . . . ...614.4.4转移功能。 . . . . . . . . . . . . . . . . . . . . . . . . ...634.4.5示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...65内容iii4.5确定性654.5.1决定论654.5.2具体领域决定论的形式化定义4.5.3抽象的第一层次664.5.4第二层次的抽象4.5.5示例684.6弱决定论694.6.1近似数值694.6.2形式定义694.6.3例2 704.7跟踪非确定性704.7.1更改值704.7.2示例714.7.3在共享内存上写作724.7.4讨论724.8投影轨迹和状态734.8.1混凝土状态734.8.2摘要状态744.8.3混凝土痕迹754.8.4摘要状态764.8.5投影状态和轨迹764.8.6层次结构774.8.7示例784.8.8讨论794.9SQL现象794.9.1SQL方法794.9.2SQL现象在我们的框架804.9.3《现象论决定论》第80章4.9.4现象和决定性性质814.9.5在摘要中824.10 数据竞赛条件824.10.1 同步824.10.2 数据竞赛和SQL现象834.10.3 确定性834.10.4 摘要状态844.11 从确定性到半自动并行化4.11.1 动机844.11.2 决定论和平行论84iv内容()4.11.3 放松决定性性质844.11.4 示例854.12 相关工作854.13 讨论864.13.1 关系域864.13.2 痕迹中的国家874.13.3 线程标识符875Java字节码的具体和抽象域及语义5.1符号895.2支持的语言905.3示例915.4混凝土领域915.5混凝土操作语义学935.5.1加载和存储935.5.2监视器935.5.3对象935.5.4阵列945.5.5算术表达式945.5.6康斯坦955.5.7跳跃955.5.8方法调用955.5.9将其应用于示例965.6控制流程图985.6.1形式定义985.6.2声音与尊重(ά+),995.7方法调用1005.8抽象域1005.8.1别名分析1015.8.2域1035.9抽象操作语义学1045.9.1加载和存储1045.9.2监视器1045.9.3对象1055.9.4阵列1065.9.5算术表达式1065.9.6康斯坦1065.9.7跳转、如果和方法调用107内容v5.9.8将其应用于示例1075.10 声音1075.10.1 域1075.10.2 语义学1095.10.3 对象1095.11 相关工作1115.12 应用于发生在内存之前的模型1125.12.1 混凝土区域1125.12.2 抽象线程标识符1135.12.3 抽象域113vi内容5.13确定性的应用。 . . . . . . . . . . . . . . . ...1145.13.1 混凝土域。 . . . . . . . . . . . . . . . . . . . . . . . . ... 1145.13.2 抽象域 . . . . . . . . . . . . . . . . . . . . . . . . . ... 1145.13.3 第二级抽象。 . . . . . . . . . . . . . . . . . . ... 1155.14讨论。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1156heckmate: Java多线程程序的通用静态分析器1176.1通用分析仪。 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1176.2关于本机方法。 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1186.3示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1196.4结构。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1206.4.1财产。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1206.4.2数值域。 . . . . . . . . . . . . . . . . . . . . . . . ... 1226.4.3内存模型。 . . . . . . . . . . . . . . . . . . . . . . . . . ... 1226.4.4交互示例。 . . . . . . . . . . . . . . . . . . . ... 1236.5参数。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1256.5.1属性。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1256.5.2数值域。 . . . . . . . . . . . . . . . . . . . . . . . ... 1256.5.3内存模型 . . . . . . . . . . . . . . . . . . . . . . . . . ... 1266.6用户界面。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1276.1命令行。 . . . . . . . . . . . . . . . . . . . . . . . . . ... 1276.6.2Eclipse插件 . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1296.7实验结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1306.7.1多线程程序的常见模式。 . . . . . . . . . ... 1306.7.2弱内存模型。 . . . . . . . . . . . . . . . . . . . . . ... 1326.7.3增量示例。 . . . . . . . . . . . . . . . . . . . . . . ... 1346.7.4基准测试。 . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1386.8相关工作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1406.8.1并发属性。 . . . . . . . . . . . . . . . . . . . . . ... 1406.8.2其他属性。 . . . . . . . . . . . . . . . . . . . . . . . . ... 1436.9讨论。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1437不安全代码1457.1什么是不安全代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1457.2合同设计。 . . . . . . . . . . . . . . . . . . . . . . . . . . . ...1467.2狐步舞 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 1477.3我们的贡献 . . . . . . . . . . . . . . . . . . . . .
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功