CN105074667B - 用于声明类型的方法以及实例化对象图的方法 - Google Patents
用于声明类型的方法以及实例化对象图的方法 Download PDFInfo
- Publication number
- CN105074667B CN105074667B CN201480004082.5A CN201480004082A CN105074667B CN 105074667 B CN105074667 B CN 105074667B CN 201480004082 A CN201480004082 A CN 201480004082A CN 105074667 B CN105074667 B CN 105074667B
- Authority
- CN
- China
- Prior art keywords
- license
- subregion
- type
- object diagram
- permitted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
特定类型的类型定义,以使相应的对象图的不同部分可以具有在实例化期间被分配给那些部分的不同许可。这允许结构化许可被应用于那些已定义类型的对象图的实例化,从而允许对于对象图的哪些部分实施哪些访问许可进行细粒度控制。在一些实施例中,对象图的不同实例化可以不同地应用许可。
Description
背景
计算系统通过执行软件程序来获得高度的功能性。程序由以某一永久形式保持的计算机可执行指令组成,诸如保持在硬驱、压缩盘、拇指驱动器、删除等等上。在执行期间,这种计算机可执行指令通常会被加载在随机存取存取器中,并且由计算系统的一个或多个处理器执行,使计算系统执行任务。
在面向对象的编程中,这些计算机可执行指令被组织为多个对象,所述多个对象通过功能调用进行交互、并且具有一个或多个属性。托管代码是在托管环境中运行的代码,该托管环境提供类型安全,但也提供存储器管理和异常处理。在托管代码中,对象具有无限的寿命、对存储没有限制,访问限制的方法涉及间接或额外资源。
系统级编程是基于对遍及系统的资源(诸如对象)的访问及寿命的严格且有效的管理。提供此严格管理的一种常用方式是使用应用程序接口 (API)来管理资源的寿命和访问。
简述
此处描述的一些实施例涉及特定类型的类型定义,以使相应对象图的不同部分可具有在实例化期间被分配至这些部分的不同许可,其中许可在该类型的每个实例的寿命期间被维持,但在一些实施例中,许可在该类型的至少一些实例的寿命期间可弱化。这允许结构化的许可被应用于那些已定义类型的对象图的实例化,从而允许对于哪些访问许可相对于对象图的哪些部分被实施进行细粒度控制。在一些实施例中,对象图的不同实例化可以不同地应用许可。
该概述不意图标识所要求保护的主题的关键特征或基本特征,也不意图被用来帮助确定所要求保护的主题的范围。
附图简述
为了描述能够获得上述及其他优点和特征的方式,将参照附图呈现各个实施例的更具体描述。理解这些附图仅描述样本实施例,因此不应被视为限制本发明的范围,实施例将通过使用附图以附加的具体性和细节来描述和解释,附图中:
图1抽象地图示了其中可采用此处所述的一些实施例的计算系统;
图2抽象地图示了表示其中可采用此处所述的实施例的示例环境的托管代码系统;
图3图示了具有结构化许可的示例对象图;
图4图示了其中可以生成和实例化具有结构化定义的类型定义的环境;
图5图示了用于生成具有结构化许可的类型定义的方法的流程图;以及
图6图示了用于实例化具有结构化许可的对象图的方法的流程图。
详细描述
按照此处描述的实施例,提供了语言扩展,以使相应对象图的不同部分可能在实例化期间具有被分配至那些部分的不同许可,许可在该类型的每个实例的寿命期间被保持,尽管在一些实施例中,许可可以在该类型的至少一些实例的寿命期间减弱。这允许结构化的许可被应用于那些已定义类型的对象图的实例化,允许对于哪些访问许可相对于对象图的哪些部分被实施进行精细的控制。在一些实施例中,对象图的不同实例化可以不同地应用许可。
将参照图1描述计算系统的一些介绍性讨论。然后,将参照图2描述托管代码系统的原理。最后,将参照图3至6来描述用于声明结构化许可的语言扩展的原理。
计算系统目前日益采取广泛的形式。计算系统可以例如是手持设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、或者甚至是通常不被认为是计算系统的设备。在该说明书以及在权利要求书中,术语“计算系统”被宽泛地定义为包括任何设备或系统(或其组合),所述设备或系统包括至少一个物理且有形的处理器、以及能在其上具有可由处理器执行的计算机可执行指令的物理且有形的存储器。存储器可以采取任何形式并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境上并且可以包括多个组成的计算系统。
如图1所示,在其最基本的配置中,计算系统100一般包括至少一个处理单元102和存储器104。存储器104可以使物理系统存储器,它可以是易失性的、非易失性的、或者两者的某一组合。术语“存储器”也可在此用来指示诸如物理存储介质这样的非易失性大容量存储器。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如此处使用的,术语“可执行模块”或“可执行组件”可以指可以在计算系统上执行的软件对象、例程或方法。此处描述的不同组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。
在以下描述中,参照由一个或多个计算系统执行的动作描述了多个实施例。如果这种动作用软件来实现,则执行该动作的相关计算系统的一个或多个处理器响应于所执行的计算机可执行指令来引导计算系统的操作。例如,这种计算机可执行指令可以体现于形成计算机程序产品的一个或多个计算机可读介质上。这一操作的示例包括数据的操纵。计算机可执行指令(以及所操纵的数据)可以被存储于计算系统100的存储器104中。计算系统100也可以包含通信信道108,通信信道108允许计算系统100通过例如网络110与其他消息处理器进行通信。
此处描述的实施例可以包括或利用专用或通用计算机,所述专用或通用计算机包括如以下进一步详细讨论的诸如例如一个或多个处理器和系统存储器这样的计算机硬件。此处描述的实施例也包括用于实现或存储计算机可执行指令和/或数据结构的物理及其他计算机可读介质。这种计算机可读介质可以使可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。实现计算机可执行指令的计算机可读介质是传输介质。因此,通过示例但非限制,本发明的实施例可以包括至少两种完全不同种类的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁性存储设备、或者可用于存储所需程序代码装置的任何其他介质,所述所需程序代码装置的形式为可由通用或专用计算机访问的计算机可执行指令或数据结构。
“网络”被定义为允许计算机系统和/或模块和/或其他电子设备间的电子数据传输的一个或多个数据链路。当信息通过网络或另一通信连接(或硬线、无线或者硬线或无线的组合)被传输或提供至计算机时,计算机将该连接正确地视为传输介质。传输介质可以包括可用于携带所需程序代码装置的网络和/或数据链路,所述所需程序代码装置的形式为可由通用或专用计算机访问的计算机可执行指令或数据结构。以上的组合也应被包括在计算机可读介质的范围内。
此外,在达到各个计算机系统组件之际,形式为计算机可执行指令或数据结构的程序代码装置可以从传输介质被自动传输至计算机存储介质 (或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中被缓冲,然后最终被传输至计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因此,应当理解,计算机存储介质可以被包括在也(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如在处理器处执行时使通用计算机、专用计算机或专用处理设备执行某一功能或一组功能的指令和数据。计算机可执行指令可以是例如二进制数、诸如汇编语言这样的中间格式指令、或甚至是源代码。尽管已经用对于结构特征和/或方法动作特定的语言描述了主题,但是应当理解,在所附权利要求书中定义的主题不必要限于上述的特征或上述动作。相反,所述特征和动作被公开作为实现权利要求的示例形式。
本领域的技术人员将领会,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实现,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在分布式系统环境中实现,在分布式系统环境中,通过网络链接(或通过硬线数据链路、或通过无线数据链路、或通过硬线和无线数据链路的组合)的本地和远程计算机系统两者均执行任务。在分布式系统环境中,程序模块可位于本地和远程的存储器存储设备两者中。
图2图示此处所述的原理可在其中操作的环境200。环境200包括跟踪对象图的隔离和易变性的框架210。框架210通过控制对引用的访问来组织对对象图的各种引用221。引用可以是局部变量、方法参数、对象字段、或者对对象图的任何其他引用。在图示实施例中,引用221被图示为包括引用221A到221E,但省略号221F象征性地表示了框架210可以管理对任何数量的引用221 的访问。
框架210通过向引用分配许可来管理对引用221的访问。“许可”是对引用的注释,该注释指示与引用是否可变有关的某一属性。这种许可由图2中的许可211抽象地表示。许可包括可读许可211A、可写许可211B 以及不可变许可211C。
“可读”许可211A意指相应的对象(以及全部其字段、以及全部其字段的字段、等等)仅仅可被读。
“可写”许可211B意指相应的对象可被写。
“不可变”许可211C类似于可读许可211A,但进一步保证没有其他人具有对该对象的可写引用。不可变许可211C还可以保证不再会有对该对象的可写引用。因此,不可变许可211C意指相应的对象将永不被写入,类似地,全部其字段、以及全部其字段的字段等等将永不被写入。对象中的所有静态字段被框架210视为具有不可变许可211C。
“新鲜”许可211D规定:1)没有对已返回引用所引用的特定对象图 (或该特定对象图内的任何对象)的外部引用,以及2)在对象图内没有对该对象图外部的任何对象的可变引用。以下将进一步详细描述“新鲜浅显 (fresh shallow)”许可211E。
框架210还包括隔离的存储器管理器212,该隔离的存储器管理器212 将存储器位置注释为隔离。存储器位置上的“隔离”注释意指该位置存储外部唯一的值。也就是说,对于该位置中存储的任何对象,在系统中没有对该对象的外部引用,也没有该对象的任何字段、或者该对象的字段的任何字段的任何引用,以此类推。例如,隔离的存储器管理器212管理隔离的存储器位置222。隔离的存储器位置被图示为包括两个隔离的存储器位置 222A和222B,但省略号222C表示隔离的存储器位置222可以包括任何数量的隔离的存储器位置。
注释组件201构建于框架210上。作为替换或补充,注释组件201可以作为框架210的一部分而操作。注释组件201被配置成评估返回引用(诸如图2的引用221之一)的可执行组件。
通常,对象上的许可是深许可,意指附加于该引用的许可深度地应用于来自该根引用的所有可达对象。然而,这并不有助于在允许对对象图的一些部分作出改变的同时保护对象图的其他部分免受改变。最值得注意的是以下概念:具有元素不能被添加或移除、但元素本身可以通过所调用的函数来改变的集合。
目前,这通过使用防止改变的接口来实现,或者通过具有包装器集合类型来实现,该包装器集合类型仅提供对根集合上的所需函数的访问。这些解决方案无一对于系统编程是最优的。接口的使用可以通过追溯回原始集合类型来推翻。包装器类型的使用既增加了分配开销也增加了间接开销,这些开销在紧凑循环中是不可接受的。
按照此处描述的原理,对象图可以被分成不同的分区,对所述不同的分区允许个别地附加各个许可。对象图可以具有无限种类的形式,且此处描述的原理不限于对象图的特定形式。然而,仅出于说明目的,图3图示了对象图包括8个对象,所述8个对象包括根对象301以及7个其他对象 302到308。在该特定示例中,有三个许可分区311、312和313。每个部分 311、312和313包括对象图内的对象的子集。例如,许可分区311包括对象301和302,许可分区312包括对象303到305,且许可分区313包括对象306到308。不同的许可可以被单独地分配至部分311、312和313中的每一个,以使被分配给任一许可分区的许可可以与被分配给任何其他许可分区的许可不同。
包含根对象的许可分区将在此也被称为“根许可分区”,而其他许可分区将在此也被称为“内部许可分区”。例如,参照图3,许可分区311 是根许可分区,而许可分区312和313是内部许可分区。
尽管以上示例示出包括三个许可分区的对象图,但是此处描述的原理也应用于定义具有两个许可分区的对象。例如,对象图可能具有由对象301 和302表示的第一许可分区、以及由对象303到308表示的第二许可分区。也就是说,此处描述的原理也应用于以下场景:其中类型的实例是也具有四个或更多个许可分区的对象图。换言之,此处描述的原理并非受限于对象图的确切形式,也不受限于对象图被分成多少个许可分区,也不受限于对象图如何被分成多个许可分区。在该说明书以及在权利要求书中,如果类型定义具有可以向其单独分配许可的多个许可分区,则类型被认为具有“结构化许可”。
图4图示了系统400,系统400包括类型定义生成组件401、类型定义访问组件402以及实例化组件403。
类型定义生成组件401生成包括结构化许可412的类型定义411。例如,类型定义生成组件401可能是创作软件的组件,或者可能是自动生成代码的软件的组件,所述代码诸如源代码、中间代码或机器代码。
类型定义访问组件402访问包括结构化许可412的类型定义411。例如,类型定义411可与图3的对象图300相对应并且包括三个许可分区311 到313。
实例化组件403使用由类型定义访问组件402所访问的类型定义来生成特定类型的对象图。例如,实例化组件403实例化对象图421和422,但实例化组件403可以实例化由省略号423表示的特定对象类型的任何数量的对象图。在生成对象图的过程中,实例化组件向每个对象图的各个许可分区分配许可。
图5图示了用于声明可具有结构化许可的类型的方法500的流程图。方法500可由例如图4的类型定义生成组件401所执行。该方法包括类型结构(动作501),并且还将类型结构分段成各个许可分区(动作502)。尽管动作501和502被顺序示出,但是在这些动作的执行之间可没有时间关系,因为它们甚至可同时发生。
例如,参考图3,对象图300示出类型结构,所述类型结构可由图4 的类型定义411来定义。在图3的情况下,将类型结构分段成各个许可分区包括:定义第一许可分区311、定义第二许可分区312以及定义第三许可分区313。结果是被包括在图4的类型定义411内的结构化许可412。再次注意,每个许可分区可以被单独地分配许可,以使第二许可分区312可(但不必)具有与第一许可分区311或第三许可分区313不同的许可。同样,第三许可分区313可(但不必)具有与第一许可分区311或第二许可分区 312不同的许可。
现在将描述制定具有结构化许可的类型定义的具体示例。在以下伪代码示例中,结构化许可通过向类型定义中的类型参数或许可参数附加关键词“contains(包含)”来形成。该类型的所有字段表示不同的数据分区。这些被称为内部许可分区,这些内部许可分区的许可被称为内部许可。“this(这个)”许可及其相关联的数据被称为根许可和根许可分区。考虑以下伪代码示例:
在以上示例中,字段m_value的类型为T,且因此表示单独的数据分区。字段m_hasValue的类型为布尔,且因此是根分区的一部分。即使对“this”的许可在GetValue方法中是可读的,m_value的类型也仅仅保持为 T。该类型不具有已定义的许可,且因此GetValue的主体不能改变内容,但它可以不改变许可而返回内容。
图6图示了用于实例化对象图的方法600,该对象图表示具有结构化许可的特定类型的实例。方法600可由例如图4 的实例化组件403使用由类型定义访问组件402所访问的类型定义411来执行。该方法600可以例如针对对象图421和对象图422的每个实例化来执行。
该方法600包括根据类型定义生成对象图601(动作601),且还包括向对象的每个许可分区分配许可(动作602)以便对于第一许可分区内的对象的访问请求实施相应的许可。尽管动作601和602被顺序示出,但是在这些动作的执行之间可没有时间关系,因为它们甚至可同时发生。
由于许可是被单独分配的,因此它们可与被分配给同一对象图内的其他许可分区的许可相同,或者它们可与同一对象图内的其他许可分区不同。例如,在对象图300的实例421中,第一许可分区311的第一许可可以是不可变的、可写的或可读的;第二许可分区312的第二许可可以是不可变的、可写的或可读的;且第二许可分区313的第三许可可以是不可变的、可写的或可读的。
例如,在以上伪代码示例中,Container(容器)的消费者可以指定内部许可分区的许可不同于根许可分区的许可。这通过如下指定具有该类型的一般实例化中的不同许可来完成:
readable Container<writable Widget>container;
此处,根许可分区被使用可读来注释,并且不能被改变。这不允许访问像要求可写的SetValue这样的方法。内部许可分区自身是可写的,且因此该许可分区内存储的值可以被改变。考虑以下伪代码示例:
writable Widget widget=container.GetValue();
widget.Name=“New Widget”;
以与具有深许可的对象可以被转换成具有更严格许可的实例相同的方式,具有结构化许可的对象也可以被转换。考虑以下伪代码示例:
writable Container<writable Widget>container=...;
readable Container<writable Widget>readonlyContainer=container;
readable Container<readable Widget> deepReadableContainer =container;
在该示例中,readonlyContainer(只读容器)与container相比具有较不宽容的许可。它允许元素被改变,但不允许container的直接改变。反之不然,尝试向container分配readonlyContainer会出错实际上,每当对目标的许可比对源的许可更严格时,就允许转换。例如,readable<writable>(可读<可写>)比writable<writable>(可写<可写>)更严格,因此允许从源 writable<writable>到目标readable<writable>的转换。而且, readable<readable>(可读<可读>)比readable<writable>更严格,因此允许从源readable<writable>到目标readable<readable>的转换。然而, writable<readable>(可写<可读>比writable<writable>更宽容,因此不允许这种转换。
以上伪代码示例说明了可以生成同一类型的多个实例,但是被分配给各个许可分区的许可不必相同。例如,考虑对象图300的第一实例421以及对象图300的第二实例422。被分配给第一实例421的第一许可分区311 的第一许可不必与被分配给第二实例422的第一许可分区311的第一许可相同。同样,被分配给第一实例421的第二许可分区312的第二许可不必与被分配给第二实例422的第二许可分区312的第二许可相同。
在此,许可的使用不需要附加的运行时开销、或额外的类型、或增加的间接,并且不需要分配。许可的使用不能用追溯回原始类型来推翻,因为类型系统禁止追溯使许可更宽容。保护简单地在编译时确保。
该设计也允许具有部分不可变性的类型。这在类型上的任一许可分区用不可变分区来标记时发生。所有分区都被标记为不可变的类型被称为是深度不可变的。考虑以下伪代码示例
immutable Container<writable Widget>container1;
writable Container<immutable Widget>container2;
immutable Container<immutable Widget>container3;
在以上示例中,container1和container2是部分不可变的。前者具有不可变的根许可分区,而后者具有可写的根许可分区但包含不可变数据。最终定义具有被标记为不可变的所有许可分区,并且是深度不可变的值。
部分不可变的根容器的构建类似于深度不可变的容器的构建。参照图 2,如果1)没有对于返回引用所引用的根对象图的外部引用,以及2)在根对象内没有到根对象外部的任何对象的可变引用,则新鲜许可211D相关于根对象来应用。该值可以被存储于隔离位置中,缓慢地随时间构建并且被实现为不可变的值。
再次参照图2,存在特殊的浅显新鲜许可211E,该浅显新鲜许可211E 表示根许可分区只不过不具有外部引用。当1)没有对返回引用所引用的根许可分区的外部引用,以及2)在根许可分区内没有对根许可分区外部的任何对象的可变引用时,该许可可应用于根许可分区。就像新鲜值一样,浅显新鲜值可以被转换成任何许可。然而,这仅仅可为根许可分区而完成。浅显新鲜许可211E对内部许可分区不具有任何效果。浅显新鲜值也可以被存储于唯一位置。
相应地,已经描述了用于定义具有结构化许可的类型、以及根据那些类型来实例化对象的有效机制。本发明可以体现于其他具体形式,而不背离其精神或基本特征。所述实施例要被视为在全部方面仅仅为说明性的且非限制性的。因此,本发明的范围由所附权利要求书指示,而非由以上描述指示。在权利要求书的等价物的含义和范围内的所有变化应被包含在其范围内。
Claims (10)
1.一种用于声明能具有结构化许可的类型的方法,所述方法包括:
定义所述类型内的第一许可分区;
定义所述类型内的第二许可分区;以及
向所述第一许可分区分配第一许可以使所述第一许可被实施于所述第一许可分区内的对象的访问请求上,并且所述第一许可表示没有对于返回引用所引用的根许可分区的外部引用,
其中所述类型的实例化对于所述第二许可分区能具有与所述第一许可分区不同的许可。
2.如权利要求1所述的方法,其特征在于,所述类型的声明还能指定与所述第一许可分区和所述第二许可分区中的至少一个相关联的最小许可限制。
3.如权利要求1所述的方法,其特征在于,所述第一许可分区是根许可分区,且所述第二许可分区是内部许可分区。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
定义所述类型内的第三许可分区以使所述类型的实例化被允许对于所述第三许可分区具有与所述第一许可分区或所述第二许可分区不同的许可。
5.一种用于实例化对象图的方法,所述对象图表示具有结构化许可的特定类型的实例,所述方法包括:
向所述对象图的第一许可分区分配第一许可以使所述第一许可被实施于所述第一许可分区内的对象的访问请求上,并且所述第一许可表示没有对于返回引用所引用的根许可分区的外部引用;以及
向所述对象图的第二许可分区分配第二许可以使所述第二许可被实施于所述第二许可分区内的对象的访问请求上,其中所述第二许可能不同于所述第一许可。
6.如权利要求5所述的方法,其特征在于,所述第一许可与所述第二许可相同。
7.如权利要求5所述的方法,其特征在于,所述第一许可与所述第二许可不同。
8.如权利要求5所述的方法,其特征在于,所述第一许可是不可变许可。
9.如权利要求5所述的方法,还包括:将所述对象图转换成其中所述第一许可和所述第二许可中的任一个或两者都更严格的对象图。
10.如权利要求5所述的方法,其特征在于,所述对象图是所述特定类型的第一对象图,所述方法还包括:
向所述特定类型的第二对象图的第一许可分区分配第三许可以使所述第三许可被实施于所述第二对象图的所述第一许可分区内的对象的访问请求上;以及
向所述第二对象图的第二许可分区分配第四许可以使所述第四许可被实施于所述第二许可分区内的对象的访问请求上,其中所述第四许可能不同于所述第一许可。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/734,758 US9229959B2 (en) | 2013-01-04 | 2013-01-04 | Object graph partial immutability and isolation enforcement |
US13/734,758 | 2013-01-04 | ||
PCT/US2014/010117 WO2014107544A1 (en) | 2013-01-04 | 2014-01-03 | Object graph partial immutability and isolation enforcement |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105074667A CN105074667A (zh) | 2015-11-18 |
CN105074667B true CN105074667B (zh) | 2018-12-21 |
Family
ID=50031536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480004082.5A Active CN105074667B (zh) | 2013-01-04 | 2014-01-03 | 用于声明类型的方法以及实例化对象图的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9229959B2 (zh) |
EP (1) | EP2941702B1 (zh) |
CN (1) | CN105074667B (zh) |
WO (1) | WO2014107544A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569282B2 (en) * | 2009-04-24 | 2017-02-14 | Microsoft Technology Licensing, Llc | Concurrent mutation of isolated object graphs |
US9098269B2 (en) | 2013-01-04 | 2015-08-04 | Microsoft Technology Licensing, Llc | System and method to ensure resource access safety with immutable object types |
US10762219B2 (en) * | 2018-05-18 | 2020-09-01 | Microsoft Technology Licensing, Llc | Automatic permissions for virtual objects |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701458A (en) * | 1995-09-20 | 1997-12-23 | International Business Machines Corporation | System and method for managing arbitrary subsets of access control lists in a computer network |
CN101361076A (zh) * | 2005-09-08 | 2009-02-04 | 桑迪士克股份有限公司 | 用于媒体内容的安全存储和传递的移动存储器系统 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6510460B1 (en) | 1997-12-18 | 2003-01-21 | Sun Microsystems, Inc. | Method and apparatus for enforcing locking invariants in multi-threaded systems |
US6438560B1 (en) | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US6675378B1 (en) | 2000-01-06 | 2004-01-06 | International Business Machines Corporation | Object oriented apparatus and method for allocating array objects on an invocation stack |
US6925638B1 (en) | 2000-09-21 | 2005-08-02 | International Business Machines Corporation | Mutability analysis in Java |
US6598141B1 (en) | 2001-03-08 | 2003-07-22 | Microsoft Corporation | Manipulating interior pointers on a stack during garbage collection |
US7058943B2 (en) | 2001-05-24 | 2006-06-06 | International Business Machines Corporation | Object oriented apparatus and method for allocating objects on an invocation stack in a partial compilation environment |
US7096456B2 (en) | 2001-11-30 | 2006-08-22 | Microsoft Corporation | Method and apparatus for providing dynamically scoped variables within a statically scoped computer programming language |
US7603664B2 (en) | 2002-10-22 | 2009-10-13 | Sun Microsystems, Inc. | System and method for marking software code |
US7912863B1 (en) | 2004-07-30 | 2011-03-22 | Microsoft Corporation | Compositional lifting of operations over structural types |
US7774376B1 (en) | 2004-07-30 | 2010-08-10 | Microsoft Corporation | Type-system extensions for object-oriented language based on coercive subtyping with restrictions |
JP5021475B2 (ja) | 2004-08-03 | 2012-09-05 | マイクロソフト コーポレーション | コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法 |
US7730450B2 (en) | 2004-08-12 | 2010-06-01 | National Instruments Corporation | Automatic versioning and data mutation of user-defined data types |
CN101046755B (zh) | 2006-03-28 | 2011-06-15 | 郭明南 | 一种计算机自动内存管理的系统及方法 |
GB0608406D0 (en) | 2006-04-28 | 2006-06-07 | Ibm | Creating references in a scoped memory system |
US8245031B2 (en) * | 2006-07-07 | 2012-08-14 | Sandisk Technologies Inc. | Content control method using certificate revocation lists |
US7739466B2 (en) | 2006-08-11 | 2010-06-15 | Intel Corporation | Method and apparatus for supporting immutable memory |
US8132093B2 (en) | 2006-08-14 | 2012-03-06 | Microsoft Corporation | Instance annotation in object-oriented programming |
US8527946B2 (en) | 2007-03-06 | 2013-09-03 | International Business Machines Corporation | Declarative object identity using relation types |
US20080244516A1 (en) | 2007-03-26 | 2008-10-02 | Microsoft Corporation | Variable capture in object oriented languages |
US9785549B2 (en) | 2007-04-27 | 2017-10-10 | Microsoft Technology Licensing, Llc | Managing object lifetime for native/managed peers |
US8281293B2 (en) | 2007-07-24 | 2012-10-02 | International Business Machines Corporation | Copy-on-write optimization of immutable objects for objects oriented languages |
US8141063B2 (en) | 2007-08-30 | 2012-03-20 | International Business Machines Corporation | Static analysis of reachable methods and fields in object-oriented applications using object instantiation |
US8122068B2 (en) | 2007-09-25 | 2012-02-21 | International Business Machines Corporation | Memory management using garbage collection of objects in child scoped memory areas |
US8347266B2 (en) | 2007-12-10 | 2013-01-01 | Microsoft Corporation | Declarative object identity |
WO2009097586A1 (en) | 2008-01-31 | 2009-08-06 | Bea Systems, Inc. | System and method for transactional cache |
US9026993B2 (en) | 2008-06-27 | 2015-05-05 | Microsoft Technology Licensing, Llc | Immutable types in imperitive language |
US8762969B2 (en) | 2008-08-07 | 2014-06-24 | Microsoft Corporation | Immutable parsing |
US8095731B2 (en) | 2008-11-06 | 2012-01-10 | Oracle International Corporation | Mutable object caching |
US8676847B2 (en) * | 2009-04-07 | 2014-03-18 | International Business Machines Corporation | Visibility control of resources |
US8495329B2 (en) | 2009-04-13 | 2013-07-23 | Microsoft Corporation | Type system support for memory isolation permissions |
US9569282B2 (en) * | 2009-04-24 | 2017-02-14 | Microsoft Technology Licensing, Llc | Concurrent mutation of isolated object graphs |
JP5724343B2 (ja) | 2009-12-25 | 2015-05-27 | リコーイメージング株式会社 | 一眼レフカメラのミラーブレーキ機構 |
US8566544B2 (en) | 2009-12-29 | 2013-10-22 | Microsoft Corporation | Compiler-enforced agent access restriction |
US9424010B2 (en) | 2010-08-30 | 2016-08-23 | International Business Machines Corporation | Extraction of functional semantics and isolated dataflow from imperative object oriented languages |
US8533413B2 (en) | 2010-12-03 | 2013-09-10 | Sap Ag | Content modification control using read-only type definitions |
US8589951B2 (en) | 2011-01-07 | 2013-11-19 | International Business Machines Corporation | Conserving memory by using objects that are selectably mutable during runtime |
-
2013
- 2013-01-04 US US13/734,758 patent/US9229959B2/en not_active Expired - Fee Related
-
2014
- 2014-01-03 WO PCT/US2014/010117 patent/WO2014107544A1/en active Application Filing
- 2014-01-03 CN CN201480004082.5A patent/CN105074667B/zh active Active
- 2014-01-03 EP EP14702318.8A patent/EP2941702B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701458A (en) * | 1995-09-20 | 1997-12-23 | International Business Machines Corporation | System and method for managing arbitrary subsets of access control lists in a computer network |
CN101361076A (zh) * | 2005-09-08 | 2009-02-04 | 桑迪士克股份有限公司 | 用于媒体内容的安全存储和传递的移动存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
US9229959B2 (en) | 2016-01-05 |
US20140195563A1 (en) | 2014-07-10 |
WO2014107544A1 (en) | 2014-07-10 |
CN105074667A (zh) | 2015-11-18 |
EP2941702A1 (en) | 2015-11-11 |
EP2941702B1 (en) | 2019-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003511B2 (en) | Controlling runtime access to application program interfaces | |
CN111078323B (zh) | 基于协程的数据处理方法、装置、计算机设备及存储介质 | |
US20170277571A1 (en) | Multi-core processor and method of controlling the same | |
CN105144098B (zh) | 不可变的对象类型 | |
Heller et al. | Closing the performance gap with modern c++ | |
CN105074667B (zh) | 用于声明类型的方法以及实例化对象图的方法 | |
KR102093531B1 (ko) | 외부 참조를 나타내지 않는 참조 속성 어노테이션 | |
Laarman | Scalable multi-core model checking | |
Thomadakis et al. | Multithreaded runtime framework for parallel and adaptive applications | |
Vassena et al. | Foundations for parallel information flow control runtime systems | |
Buiras et al. | A library for removing cache-based attacks in concurrent information flow systems | |
Gijsbers et al. | An efficient scalable runtime system for macro data flow processing using S-Net | |
CN112860420A (zh) | 基于硬件虚拟化的数据处理方法及装置 | |
Bouteiller et al. | Evaluating contexts in OpenSHMEM-X reference implementation | |
Nobakht et al. | Programming with actors in Java 8 | |
Wenzel et al. | Translation of interactive Datalog programs for microcontrollers to finite state machines | |
Henrio et al. | From modelling to systematic deployment of distributed active objects | |
Rodríguez et al. | Dynamic management of multikernel multithread accelerators using dynamic partial reconfiguration | |
Azadbakht et al. | Distributed network generation based on preferential attachment in ABS | |
Capelli | Performance, memory efficiency and programmability: the ambitious triptych of combining vertex-centricity with HPC | |
Voss et al. | Controlling the Number of Threads Used for Execution | |
Diertens | From Functions to Object-Orientation by Abstraction | |
Fox et al. | Anodize: Language-Level Guarantees for Mixed Criticality Systems | |
El-Rouby et al. | NileOS: A Distributed Asymmetric Core-Based Micro-Kernel for Big Data Processing | |
Zhang et al. | SPMP: A JavaScript Support for Shared Persistent Memory on Node. js |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |