COM线程模型之一[译]


[原文]http://msdn.microsoft.com/en-us/library/ms809971.aspx

Objects and Apartments

If you've so much as cracked a book on COM, you've undoubtedly come across the term apartment, which describes the constructs in which COM objects are created. If you're unfamiliar with this concept, the often-used analogy of an apartment building may help to clarify.

If you think of the building as an application's process, each apartment is a distinct area in which a COM object can be created. As with the more tangible kind of apartment, a COM apartment is a fairly self-contained unit that shares some similarities with other apartments in the same building/process. But just as there may be lofts, studios, and 2- or 3-bedroom apartments in the same building, there can also be different types of COM apartments within a process. Apartments may also be vacant or have any number of people/objects living in them.

It may be helpful to remember a few key points about COM apartments:

  • An apartment is not a thread. The one-to-one relationship between threads and single-threaded apartments may lead you to believe that the two terms are interchangeable—they are not.
  • An object is not an apartment. Objects are created in apartments.
  • A particular instance of an object can belong to only one apartment.
  • An apartment's concurrency model, whether it is single-threaded or multi-threaded, cannot be changed after it is created.
  • A process can have zero or more single-threaded apartments—one for each thread that calls CoInitialize .
  • A process has one multi-threaded apartment or none at all—all threads that call CoInitializeEx with COINIT_MULTITHREADED share the same apartment.

对象以及套间

       如果你在COM的书上抓狂,那么毫无疑问你碰到了套间这个术语.这个术语主要用来描述创建COM对象的环境.套间经常被拿来与公寓做比喻,这种比喻对理解套间十分有帮助.

      如果把应用程序所在的进程比喻成为一栋建筑,那么每一个公寓就是一个独立的区域.这就是构建COM对象的环境.像每一个现实中的公寓一样,一个COM的套间是一个完全独立的单位,并且与进程/建筑中的其他公寓有一些共同点.但是就像大楼中的公寓,有的有阁楼,有的有2个或者3个卧室,一个进程中也可以有不同种类的COM套间.套间或许是空的,也有可能有许多人/对象居住其中.  

      记住下面的一些关键点将会对理解套间有一些帮助:

      <1>一个套间不是一个线程.线程与单线程套间是一对一的关系.这种关系会导致你认为线程和套间是一马事,其实不是;

      <2>一个对象不是一个套间.对象在套间中创建.

      <3>对象的实例只能属于一个套间.

      <4>一个套间当前的模型,不管是单线程套间还是多线程套间,都不能在创建之后改变;

      <5>一个进程可以有0个或者多个单线程套间-每个套间对应一个调用Coinitialize的线程;

      <6>一个进程可以有一个或没有多线程套间.每一个调用参数为COINIT_MULTITHREADED的ConInitializeEx的线程共享相同的套间.

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值