typedef CComAutoCriticalSection AutoCriticalSection;
Osservazioni
Quando si utilizza CComMultiThreadModel, il nome di typedef AutoCriticalSection fa riferimento a classe CComAutoCriticalSection, che fornisce i metodi per ottenere e rilasciare le proprietā di un oggetto sezione critica.
CComSingleThreadModel e CComMultiThreadModelNoCS contengono anche le definizioni per AutoCriticalSection. La tabella seguente mostra la relazione tra la classe del modello di threading e riferimento alla sezione critica di classi da AutoCriticalSection:
| Classe definita in | Classe a cui fa riferimento |
| CComMultiThreadModel | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
Oltre a AutoCriticalSection, č possibile utilizzare il nome di typedef CriticalSection. AutoCriticalSection non deve specificare in oggetti globali o membri di classe statici se si desidera eliminare il codice di avvio CRT.
Esempio
Il codice seguente č tratto da CComObjectRootEx.
templatelt; classe ThreadModel >
classe CComObjectRootEx: pubblico CComObjectRootBase
{
pubblica:
typedef ThreadModel _ThreadModel;
typedef _ThreadModel::AutoCriticalSection _CritSec;
ULONG InternalAddRef)
{
...
return _ThreadModel::Increment(&m_dwRef);
}
...
void Lock () {m_critsec.Lock (); }
...
privato:
_CritSec m_critsec;
}
Nelle tabelle seguenti mostrano i risultati dei metodi InternalAddRef e Lock , a seconda del parametro di template di ThreadModel e il modello di threading utilizzato dall'applicazione:
ThreadModel = CComObjectThreadModel
| Singolo o appartamento | Gratis | |
| InternalAddRef | L'incremento non č thread-safe. | L'incremento č thread-safe. |
| Blocco | Non fa nulla; esiste una sezione critica per bloccare. | La sezione critica č bloccata. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| Singolo o appartamento | Gratis | |
| InternalAddRef | L'incremento non č thread-safe. | L'incremento č thread-safe. |
| Blocco | Non fa nulla; esiste una sezione critica per bloccare. | Non fa nulla; esiste una sezione critica per bloccare. |
Pa&noramica CComMultiThreadModel |nbsp; Membri della classe
Vedere anchenbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS