COM+ 同步概念

通常,如果具有单线程单元 (STA),则不需要同步,因为这种单元会提供同步。 当具有多线程单元 (MTA) 和自由线程对象时,同步变得很重要。 过去,自由线程对象必须处理锁定。 可以通过设置组件的同步属性来消除使用锁定的需要。

同步具有以下属性:

  • 一次允许一个调用方进入组件。
  • 禁止跨进程或跨计算机流动。
  • 从组件流向进程中的组件。
  • 允许从同一调用方重入。

与单元不同,活动跨越多个进程和主机的上下文。 同步确定将包含对象的活动。 对象可以驻留在下列任何活动中:

  • 创建者的活动
  • 新建活动
  • 无活动

COM+ 确保每个活动的一系列锁定的并发性。 如果调用方尝试输入另一个调用方已在使用的 COM+ 同步组件,则会阻止调用,直到释放锁定。 此阻止行为不会超时,并且无法配置为超时。如果未在使用锁定,则获取锁定并处理调用。 完成后,将为下一个调用方释放锁定。 为了防止死锁,COM+ 通过在整个网络中链接的嵌套系列调用管理对活动中的所有对象的访问。

COM+ 提供以下同步设置:

  • 已禁用
  • 不支持
  • 支持
  • 必须
  • Requires New

注意

某些同步设置与其他 COM+ 组件设置结合使用。 例如,如果启用了 COM+ 实时 (JIT) 激活服务,则需要同步。 如果启用事务,则需要 JIT;因此,COM+ 事务处理也需要同步。 因此,具有 JIT=True 设置的类还必须具有 Synchronization=Required 或 Synchronization=RequiresNew 的设置。

 

有关使用组件服务管理工具设置同步选项的说明,请参阅设置同步属性

若要获取有关使用 COM+ 管理库设置同步选项的详细信息,请参阅自动执行 COM+ 管理

COM+ 同步任务