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+.
Tópicos relacionados