单线程单元:使COM对象可以存在与同一进程中的不同线程中。
在STA前,所有组件的访问都通过应用程序的主线成进行下去。假设利用进程外服务器通过某一组件的100个实例来管理100个客户,那么,客户程序对于一个实例的访问讲被串行化这是因为它必须在主线成上发生。这种设置对于组件开发着是有帮助的,因为这样他们就不会被并行事件所困扰,但是,在大型客户端、服务器应用程序中,这种特性是不被允许的。
STA使得一个客户可以创建任意数目的线程来包容COM对象,而且,它使得在组件的实现中,应用多线程的组件开发成为可能。无论如何,每一个应用COM的线程都成为它自己的STAte。
多线程单元
单元
COM单元是一种概念性的实体,使我们能够以一种逻辑的方式来考虑组件和它们的客户程序。单元表明,在一个单元内部的软件之间存在一些类型的隔离。单元不是一个线程,但是一个线程只属于一个单元。单元也不是一个COM对象实例,但每一COM实例也值属于一个单元。
每个调用ConInitialize的线程都会被加入单元。