CN101689136A - 事务存储器的对象模型 - Google Patents

事务存储器的对象模型 Download PDF

Info

Publication number
CN101689136A
CN101689136A CN200880022262A CN200880022262A CN101689136A CN 101689136 A CN101689136 A CN 101689136A CN 200880022262 A CN200880022262 A CN 200880022262A CN 200880022262 A CN200880022262 A CN 200880022262A CN 101689136 A CN101689136 A CN 101689136A
Authority
CN
China
Prior art keywords
object model
transaction
memory
affairs
computer
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.)
Granted
Application number
CN200880022262A
Other languages
English (en)
Other versions
CN101689136B (zh
Inventor
M·塔耶费尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101689136A publication Critical patent/CN101689136A/zh
Application granted granted Critical
Publication of CN101689136B publication Critical patent/CN101689136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Abstract

公开了用于提供事务存储器的对象模型的各种技术和方法。事务存储器的对象模型允许将事务语义与程序流分开。使用该对象模型创建的存储器事务对象可在实例化执行范围之外生存,这允许提供和控制关于存储器事务的附加细节。事务存储器甚至可得到不直接展示事务存储器构造的语言的支持。通过在一个或多个基类库中定义该对象模型并且允许不直接支持事务存储器的语言通过该对象模型使用事务存储器来使之成为可能。

Description

事务存储器的对象模型
背景
计算机随时间不断变得更加强大,具有更多的处理能力和存储器来处理高级操作。这一趋势最近将焦点从日益增长的单处理器时钟速率移开,并趋向于增加单个计算机中可用处理器的数量。软件开发者想要利用计算机处理能力的提高来使得他们的软件程序能够在采用新硬件时更快地执行。然而,对于该新硬件趋势,这要求不同的方法:开发者必须安排特定软件程序的一个或多个任务“并发地”(有时称为“并行”)执行,以使同一逻辑操作可以同时利用多个处理器,并在向该软件在其上运行的计算机添加更多处理器时提供更好的性能。
事务存储器被设计成通过向程序代码区域提供原子性和隔离性来简化并发程序的开发。事务存储器(TM)是类似于数据库事务的、用于在并发计算中控制对共享存储器的访问的并发控制机制。事务存储器的上下文中的事务是对共享存储器执行一系列读取和写入的一段代码。TM用作传统锁定机制的替换。TM允许更简单地编写并发程序。事务指定应当如其正在孤立地执行那样执行的代码序列。这一孤立错觉可以通过细粒度的对象锁定,以及通过以允许在发现事务与某一其它事务相冲突的情况下回退该事务的效果的模式执行来实现。如果数据访问受这些锁定和回退机制保护,则可以说该访问被“事务化”。
现有事务存储器使用简单的语言构造来定义事务。这些事务通过声明诸如以下示例的原子代码块的开头和结尾的基于范围的语言构造来隐式地实例化:
atomic(原子)
{
  ...要在事务中执行的语句放在这里...
}
该对于事务存储器的当前方法要求事务绑定到程序流的特定部分,并且只由已被升级为包括显式事务语义及相关联的构造的编程语言来支持。
概述
公开了用于提供事务存储器的对象模型的各种技术和方法。事务存储器的对象模型允许将事务语义与语言范围规则分开。使用该对象模型创建的事务存储器对象可在与传统的原子块相关联的名义范围之外生存,从而允许与基于范围的原子块相比的新的使用模型和附加功能。
在一个实现中,事务存储器语义甚至可得到不直接支持事务存储器构造的语言的支持。这通过在一个或多个基类库中定义该对象模型并且允许不直接支持事务存储器的语言通过该对象模型使用事务存储器来使之成为可能。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是一个实现的计算机系统的图示。
图2是在图1的计算机系统上操作的一个实现的事务存储器框架应用程序的图示。
图3是示出用于存储器事务的对象模型可在基类库中实现的一个实现的图示。
图4是图1的系统的一个实现的处理流程图,其示出在提供事务存储器的对象模型时所涉及的各阶段。
图5是图1的系统的一个实现的处理流程图,其示出在从甚至不展示事务存储器构造的语言提供对事务存储器的支持时所涉及的各阶段。
图6是示出一个实现的存储器事务类的骨架定义的示例的图。
图7是示出一个实现的用于通过对象模型来声明和使用存储器事务的某些示例性源代码的示图。
图8是图1的系统的一个实现的处理流程图,其示出在启动另一线程并使其协助执行事务中的工作时所涉及的各阶段。
图9是示出用于使用对象模型来创建具有多个线程的单个事务的某些示例性源代码的示图,这些线程为执行该单个事务的工作作出贡献。
图10是图1的系统的一个实现的处理流程图,其示出在挂起事务并且在稍后继续该事务时所涉及的各阶段。
图11是示出用于挂起事务并在稍后继续该事务的某些示例性源代码的示图。
图12是图1的系统的一个实现的处理流程图,其示出在通过使用对象模型来支持事务存储器来提供增强的事务功能时所涉及的各阶段。
详细描述
为促进对本发明的原理的理解,现将对附图中所示的各实施例加以参考,同时也将用具体语言描述它们。不过,需要理解的是,并无意由此作出范围上的限制。对所述实施例的任何改变和进一步更改,以及在此所述的原理的进一步应用都可以预期将是本领域技术人员通常能想到的。
该系统可以在一般上下文中被描述为用于提供事务存储器的对象模型的框架,但是该系统还用于除此之外的其它目的。在一个实现中,此处所描述的技术中的一个或多个可被实现为诸如
Figure G2008800222620D00031
.NET、Java虚拟机等框架或平台内的、或来自提供用于使用事务存储器系统来运行应用程序的平台的任何其它类型的程序或服务的特征。
如图1所示,用于实现本系统的一个或多个部分的示例性计算机系统包括诸如计算设备100等计算设备。在其最基本的配置中,计算设备100通常包括至少一个处理单元102和存储器104。取决于计算设备的确切配置和类型,存储器104可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图1中由虚线106来示出。
另外,设备100还可具有附加特征/功能。例如,设备100还可包含附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储所需信息并且可由设备100访问的任何其它介质。任何这样的计算机存储介质都可以是设备100的一部分。
计算设备100包括允许计算设备100与其它计算机/应用程序115进行通信的一个或多个通信连接114。设备100还可以具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备112。还可以包括诸如显示器、扬声器、打印机等输出设备111。这些设备在本领域中公知且无需在此处详细讨论。在一个实现中,计算设备100包括事务存储器框架应用程序200。事务存储器框架应用程序200将在图2中更详细地描述。
现在转向图2并继续参考图1,示出了在计算设备100上操作的事务存储器框架应用程序200。事务存储器框架应用程序200是驻留在计算设备100上的应用程序中的一个。然而,可以理解,事务存储器框架应用程序200可另选地或另外地被具体化为一个或多个计算机上的计算机可执行指令和/或与图1所示的不同的变型。另选地或另外地,事务存储器框架应用程序200的一个或多个部分可以是系统存储器104的一部分、可以在其它计算机和/或应用程序115上、或可以是计算机软件领域的技术人员能想到的其它此类变型。
事务存储器框架应用程序200包括负责执行在此描述的技术中的一些或全部的程序逻辑204。程序逻辑204包括提供用于将事务句法与程序流分开的事务存储器的对象模型的逻辑206;用于使用对象模型来在不展示用于事务存储器的显式构造的编程语言中支持事务存储器的逻辑208;用于使用对象模型来在事务存储器系统中支持增强的事务可编程性的逻辑210;用于通过使用对象模型来创建和管理事务来提供增强的事务控制的逻辑212;以及用于操作应用程序的其它逻辑220。在一个实现中,程序逻辑204可操作来通过编程,如使用对程序逻辑204中的过程的单一调用而从另一程序调用。
图3是示出可在一个或多个由虚拟机250使用的基类库248中实现的用于存储器事务的对象模型的图示240。多个语言(242、244和246)然后可访问该对象模型,无论这些语言中的相应的一个语言是否具有直接来自该语言中的对存储器事务构造的支持。
现在转到图4-12并继续参考图1-2,更详细地描述用于实现事务存储器框架应用程序200的一个或多个实现的各阶段。在某些实现中,图4-12的过程至少部分地用计算设备100的操作逻辑来实现。图4示出了在提供事务存储器的对象模型时所涉及的各阶段的一个实现。该过程开始于起始点270,在那里提供事务存储器的对象模型(阶段272)。通过该对象模型,将事务句法与程序流分开(阶段274)。可使用在声明范围的执行范围之外生存的对象模型来创建存储器事务对象(阶段276)。该延长的生存期提供了在此处更详细地讨论的附加特征。该过程在结束点278处结束。
图5示出了在从甚至不展示事务存储器构造的语言提供对事务存储器的支持时所涉及的各阶段的一个实现。该过程开始于起始点290,在那里在一个或多个基类库中提供事务存储器的对象模型的定义(阶段292)。该系统允许支持和不支持事务存储器的语言通过基类库中的对象模型来使用事务存储器(阶段294)。该过程在结束点296处结束。
图6是示出一个实现的存储器事务类的骨架定义的示例的示图310。图6所示的存储器事务类312示出了对顶级存储器事务314、嵌套的存储器事务316的定义、对事务进行读写的各种方法318、用于控制事务的方法320、返回当前环境事务分层结构的属性322以及线程本地值324。如在后面的附图中更详细地描述的,通过使用对象模型来提供存储器事务,可实现不与程序流绑定的附加特征和改进。
图7是示出一个实现的用于根据对象模型来声明和使用存储器事务的某些示例性源代码的示图340。在所示的示例中,声明新的存储器事务,并且随后调用关于该对象的各种方法,诸如写(write)方法和提交(commit)方法。
图8示出了在启动另一线程并且使其协助执行工作时所涉及的各阶段的一个实现。该过程开始于起始点370,在那里使用事务存储器对象模型来声明并开始事务(阶段372)。启动第二线程(阶段374),该线程随后加入并参与该事务(阶段376)。该过程在结束点378处。
图9是示出用于使用对象模型来创建具有多个线程的单个事务的某些示例性源代码的示图400,这些线程为执行该单个事务的工作作出贡献。在所示的示例中,创建存储器事务402,并且随后启动可协助执行一部分工作的新线程404。
图10示出了在挂起事务并在稍后继续该事务时所涉及的各阶段的一个实现。该过程开始于起始点430,在那里提供事务存储器对象模型(阶段432)。该系统开始事务(阶段434),并且随后在稍后挂起同一事务(阶段436)。该系统获得所挂起的事务的快照(阶段438)以允许在稍后继续该事务。该系统随后在稍后从该快照继续所挂起的事务(阶段440)。该过程在结束点442处结束。
图11是示出用于进一步示出图10的各阶段的某些示例性源代码的示图460。在所示的示例中,挂起事务,捕捉事务对象的快照,并且随后在稍后继续该事务。
图12示出了在通过使用对象模型来创建事务来提供增强的事务细节时所涉及的各阶段的一个实现。尽管在流程图中描述这些阶段,但这些特征不旨在具有特定顺序。此外,某些、所有和/或其它特征可使用不同于在图12中所述的那些的对象模型来支持。该过程开始于起始点500,在那里在对象模型中支持自省(introspection)以允许获得事务的当前状态(阶段502)。该系统支持向统计数据查询事务的使用模式和诊断信息的能力(阶段504)。例如,可以计算写入特定事务的数据量。该系统支持对先前捕捉的事务状态的操纵(阶段506),诸如分析在执行事务时捕捉到的一个或多个值。该系统可将当前和/或先前捕捉到的事务状态提供给调试程序以帮助调试(阶段508)。该过程在结束点510处结束。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。落入在此所述和/或所附权利要求所描述的实现的精神的范围内的所有等效方案、更改和修正都期望受到保护。
例如,计算机软件领域普通技术人员将认识到,此处所讨论的示例可以在一个或多个计算机上不同地组织来包括比这些示例中所描绘的更少或更多选项或特征。

Claims (20)

1.一种具有用于使计算机执行以下步骤的计算机可执行指令的计算机可读介质,所述步骤包括:
提供事务存储器的对象模型,所述对象模型允许将事务句法与程序流分开(206)。
2.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型可用于在不展示事务存储器构造的编程语言中支持事务存储器(208)。
3.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型在框架的一个或多个基类库中实现(292)。
4.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型可用于允许根据所述对象模型来创建的存储器事务对象在实例化执行范围之外生存(276)。
5.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型提供用于创建顶级事务的构造函数(314)。
6.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型提供用于创建嵌套事务的构造函数(316)。
7.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型提供用于执行事务读写的方法(318)。
8.如权利要求1所述的计算机可读介质,其特征在于,所述对象模型提供用于事务控制的方法(320)。
9.一种用于提供事务存储器的对象模型的方法,所述方法包括以下步骤:
提供事务存储器的对象模型,所述对象模型允许将事务语义与程序流分开(274);以及
允许使用所述对象模型来创建的存储器事务对象在实例化执行范围之外生存,从而允许操纵关于所述存储器事务的附加属性(276)。
10.如权利要求9所述的方法,其特征在于,所述附加属性包括所述事务中的一个或多个的当前状态(276)。
11.如权利要求9所述的方法,其特征在于,所述附加属性包括关于所述事务中的一个或多个的使用模式的统计数据(504)。
12.如权利要求9所述的方法,其特征在于,所述附加属性包括关于所述事务中的一个或多个的诊断信息的统计数据(504)。
13.如权利要求9所述的方法,其特征在于,所述附加属性包括所述事务中的一个或多个的先前捕捉到的事务状态(506)。
14.如权利要求9所述的方法,其特征在于,所述附加属性被提供给调试程序以帮助调试(508)。
15.如权利要求14所述的方法,其特征在于,所述附加属性包括所述事务中的一个或多个的先前捕捉到的事务状态(506)。
16.如权利要求14所述的方法,其特征在于,所述附加属性包括所述事务中的一个或多个的当前事务状态(502)。
17.一种具有用于使计算机执行如权利要求9所述的步骤的计算机可执行指令的计算机可读介质(200)。
18.一种用于从不直接展示事务存储器构造的语言提供对事务存储器的支持的方法,所述方法包括以下步骤:
在至少一个基类库中定义事务存储器的对象模型;以及
允许不直接支持事务存储器的语言通过所述对象模型来使用事务存储器(294)。
19.如权利要求18所述的方法,其特征在于,所述对象模型允许所述语言声明和使用存储器事务对象(294)。
20.一种具有用于使计算机执行如权利要求18所述的步骤的计算机可执行指令的计算机可读介质(200)。
CN200880022262.0A 2007-06-26 2008-06-12 事务存储器的对象模型 Active CN101689136B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/821,838 US8196123B2 (en) 2007-06-26 2007-06-26 Object model for transactional memory
US11/821,838 2007-06-26
PCT/US2008/066781 WO2009002725A1 (en) 2007-06-26 2008-06-12 Object model for transactional memory

Publications (2)

Publication Number Publication Date
CN101689136A true CN101689136A (zh) 2010-03-31
CN101689136B CN101689136B (zh) 2016-03-30

Family

ID=40162331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880022262.0A Active CN101689136B (zh) 2007-06-26 2008-06-12 事务存储器的对象模型

Country Status (5)

Country Link
US (1) US8196123B2 (zh)
EP (1) EP2176761B1 (zh)
JP (1) JP5186562B2 (zh)
CN (1) CN101689136B (zh)
WO (1) WO2009002725A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8042091B2 (en) * 2007-03-14 2011-10-18 International Business Machines Corporation Automatic composition of model transformations
US8266604B2 (en) * 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US8751860B2 (en) * 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2239334B (en) 1989-12-22 1994-07-06 Intel Corp Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
US5157777A (en) 1989-12-22 1992-10-20 Intel Corporation Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
CA2115464C (en) 1994-02-11 1998-12-15 William G. O'farrell Concurrent processing in object oriented parallel and near parallel systems
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6085035A (en) 1997-09-09 2000-07-04 Sun Microsystems, Inc. Method and apparatus for efficient operations on primary type values without static overloading
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
WO1999044296A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6138269A (en) 1998-05-20 2000-10-24 Sun Microsystems, Inc. Determining the actual class of an object at run time
US6553384B1 (en) 1999-06-14 2003-04-22 International Business Machines Corporation Transactional name service
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
AU2001259089A1 (en) 2000-04-18 2001-11-07 Sun Microsystems, Inc. Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value
US7006099B2 (en) 2000-08-15 2006-02-28 Aware, Inc. Cache system and method for generating uncached objects from cached and stored object components
US6654760B2 (en) 2001-06-04 2003-11-25 Hewlett-Packard Development Company, L.P. System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7827135B2 (en) * 2002-12-31 2010-11-02 International Business Machines Corporation Method and apparatus for relaxed transactional isolation in a client-server caching architecture
US6988110B2 (en) * 2003-04-23 2006-01-17 International Business Machines Corporation Storage system class distinction cues for run-time data management
US7395278B2 (en) * 2003-06-30 2008-07-01 Microsoft Corporation Transaction consistent copy-on-write database
US7340735B2 (en) * 2003-10-30 2008-03-04 Sprint Communications Company L.P. Implementation of distributed and asynchronous processing in COBOL
US20050289212A1 (en) * 2004-06-01 2005-12-29 Tankov Nikolal D Non-transactional resource reference
US20060026379A1 (en) * 2004-07-27 2006-02-02 Samsung Electronics Co., Ltd. Effective memory management method and device in object-oriented application
EP1788497A1 (fr) 2005-11-18 2007-05-23 Alcatel Lucent Motif de conception et procédé de transformation d'un modèle objet
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8601456B2 (en) * 2006-08-04 2013-12-03 Microsoft Corporation Software transactional protection of managed pointers
US7962456B2 (en) * 2007-06-27 2011-06-14 Microsoft Corporation Parallel nested transactions in transactional memory
US7809525B2 (en) * 2007-07-31 2010-10-05 International Business Machines Corporation Automatic configuration of robotic transaction playback through analysis of previously collected traffic patterns

Also Published As

Publication number Publication date
JP5186562B2 (ja) 2013-04-17
EP2176761A1 (en) 2010-04-21
US20090007057A1 (en) 2009-01-01
EP2176761B1 (en) 2018-12-19
EP2176761A4 (en) 2010-07-07
US8196123B2 (en) 2012-06-05
WO2009002725A1 (en) 2008-12-31
CN101689136B (zh) 2016-03-30
JP2010532048A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
KR101240092B1 (ko) 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼
JP5284103B2 (ja) ソフトウェアトランザクショナルメモリ動作の最適化
CN101681294B (zh) 用于存储器事务分组的方法和系统
Burckhardt et al. Concurrent programming with revisions and isolation types
Korland et al. Noninvasive concurrency with Java STM
CN101542437B (zh) 软件事务性存储器操作的优化
JP5681473B2 (ja) プログラムの最適化装置、最適化方法および最適化プログラム
JP5957006B2 (ja) 拡張可能なデータ並列セマンティクス
CN102289387A (zh) 软件事务存储器中的动作框架
JP4754004B2 (ja) マルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
CN101689136A (zh) 事务存储器的对象模型
US8769514B2 (en) Detecting race conditions with a software transactional memory system
Xiang et al. Composable partitioned transactions
US9239803B2 (en) Array object concurrency in STM
CN101681293B (zh) 在事务存储器系统中高效地定位事务代码块
Zhou et al. The Mimir Approach to Transactional Output
Botto et al. Objective-C language and GNUstep base library programming manual

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150721

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150721

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant