Partilhar 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 se tem um apartamento multifios (MTA) e um objeto livre de fios. No passado, os objetos com rosca livre tinham que lidar com o 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 de cada vez.
  • Proíbe o fluxo entre processos ou entre computadores.
  • Fluxos de componente para componente dentro de um processo.
  • Permite a reentrada pelo 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

COM+ garante concorrência através de 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 irá expirar e não poderá ser configurado para expirar. Se o bloqueio não estiver em uso, ele é estabelecido e a chamada é processada. Após a conclusão, o bloqueio é liberado para o próximo chamador. Para evitar o deadlock, o COM+ gestiona o acesso a todos os objetos em todas as atividades através de uma série aninhada de chamadas encadeadas por toda a rede.

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

  • Desabilitado
  • Não suportado
  • Suportado
  • Necessário
  • Requer novo

Observação

Algumas configurações de sincronização funcionam em conjunto com outras configurações de componentes COM+. Por exemplo, a sincronização será necessária se o serviço de ativação just-in-time (JIT) COM+ estiver ativado. O JIT é necessário se você habilitar transações; portanto, o processamento de transações COM+ também requer sincronização. Portanto, as classes com a configuração 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+