Condividi tramite


Concetti relativi alla sincronizzazione COM+

In genere, la sincronizzazione non è necessaria quando si dispone di un apartment a thread singolo (STA) perché l'apartment fornisce la sincronizzazione per l'utente. La sincronizzazione diventa importante quando si dispone di un apartment multithreading (MTA) e di un oggetto a thread libero. In passato, gli oggetti a thread libero hanno dovuto gestire il blocco. È possibile eliminare la necessità di usare il blocco impostando l'attributo di sincronizzazione per un componente.

La sincronizzazione ha le proprietà seguenti:

  • Consente a un chiamante di immettere il componente alla volta.
  • Impedisce il flusso tra processi o tra computer.
  • Passa dal componente al componente all'interno di un processo.
  • Consente la reentrancy dallo stesso chiamante.

A differenza degli appartamenti, le attività si estendono su contesti di più processi e host. La sincronizzazione determina quale attività conterrà un oggetto . Gli oggetti possono risiedere in una delle attività seguenti:

  • Attività del creatore
  • Nuova attività
  • Nessuna attività

COM+ garantisce la concorrenza da una serie di blocchi per ogni attività. Se un chiamante tenta di immettere un componente sincronizzato COM+ già utilizzato da un altro chiamante, la chiamata viene bloccata fino al rilascio del blocco. Questo comportamento di blocco non si verifica il timeout e non può essere configurato per il timeout. Se il blocco non è in uso, il blocco viene acquisito e la chiamata viene elaborata. Al termine, il blocco viene rilasciato per il chiamante successivo. Per evitare deadlock, COM+ gestisce l'accesso a tutti gli oggetti tra le attività da una serie annidata di chiamate concatenati in tutta la rete.

COM+ fornisce le impostazioni di sincronizzazione seguenti:

  • Disabled
  • Non supportato
  • Supportato
  • Richiesto
  • RequiresNew

Nota

Alcune impostazioni di sincronizzazione funzionano insieme ad altre impostazioni del componente COM+. Ad esempio, la sincronizzazione è necessaria se il servizio di attivazione JIT (JUSTT) COM+ è abilitato. JIT è necessario se si abilitano le transazioni; pertanto, l'elaborazione delle transazioni COM+ richiede anche la sincronizzazione. Pertanto, le classi con l'impostazione di JIT=True devono avere anche l'impostazione Synchronization=Required o Synchronization=RequiresNew.

 

Per istruzioni sull'impostazione delle opzioni di sincronizzazione tramite lo strumento di amministrazione di Servizi componenti, vedere Impostazione dell'attributo di sincronizzazione.

Per altre informazioni sull'uso della libreria di Amministrazione istration COM+ per impostare le opzioni di sincronizzazione, vedere Automazione delle Amministrazione COM+.

Attività di sincronizzazione COM+