Compartilhar via


Conceitos de sincronização COM+

Geralmente, a sincronização não é necessária quando você tem um apartamento de thread único (STA) porque o apartamento fornece a sincronização para você. A sincronização torna-se importante quando você tem um apartamento multithreaded (MTA) e um objeto free-threaded. No passado, objetos de thread livre tinham que lidar com bloqueio. Você pode eliminar a necessidade de usar o bloqueio definindo o atributo de sincronização para um componente.

A sincronização tem as seguintes propriedades:

  • Permite que um chamador insira o componente por vez.
  • Proíbe o fluxo entre processos ou computadores.
  • Flui de componente para componente dentro de um processo.
  • Permite reentrância do mesmo chamador.

Ao contrário dos apartamentos, as atividades abrangem contextos de vários processos e anfitriões. A sincronização determina qual atividade conterá um objeto. Os objetos podem residir em qualquer uma das seguintes atividades:

  • Atividade do criador
  • Nova atividade
  • Sem atividade

O COM+ garante a simultaneidade por uma série de bloqueios para cada atividade. Se um chamador tentar inserir um componente sincronizado COM+ que já está sendo usado por outro chamador, a chamada será bloqueada até que o bloqueio seja liberado. Esse comportamento de bloqueio não atingirá o tempo limite e não poderá ser configurado para atingir o tempo limite. Se o bloqueio não estiver em uso, o bloqueio é adquirido e a chamada é processada. Após a conclusão, o bloqueio é liberado para o próximo chamador. Para evitar o impasse, o COM+ gerencia o acesso a todos os objetos em todas as atividades por uma série aninhada de chamadas encadeadas em toda a rede.

COM+ fornece as seguintes configurações de sincronização:

  • Desabilitado
  • Sem suporte
  • Com suporte
  • Obrigatório
  • Requer novo

Observação

Algumas configurações de sincronização funcionam em conjunto com outras configurações de componente COM+. Por exemplo, a sincronização será necessária se o serviço de ativação just-in-time (JIT) COM+ estiver habilitado. O JIT é necessário se você habilitar transações; portanto, o processamento de transações COM+ também requer sincronização. Assim, as classes com a configuração de JIT=True também devem ter a configuração de Synchronization=Required ou Synchronization=RequiresNew.

 

Para obter instruções sobre como definir opções de sincronização usando a ferramenta administrativa Serviços de Componentes, consulte Definindo o atributo de sincronização.

Para obter mais informações sobre como usar a Biblioteca de Administração COM+ para definir opções de sincronização, consulte Automatizando a administração COM+.

Tarefas de sincronização COM+