typedef CComAutoCriticalSection AutoCriticalSection;
Bemerkungen
Wenn Sie Suchenverwenden, verweist der Typedef -Name AutoCriticalSection Klasse CComAutoCriticalSection, die Methoden zum Abrufen und Freigeben von Eigentum an ein kritisches Abschnittsobjekt bereitstellt.
CComSingleThreadModel und CComMultiThreadModelNoCS enthalten auch Definitionen für AutoCriticalSection. Die folgende Tabelle zeigt die Beziehung zwischen der threading Modellklasse und den kritischen Abschnitt Referenz von AutoCriticalSection:
| In definierten Klasse | Referenzierte Klasse |
| Suchen | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
Zusätzlich zu AutoCriticalSectionkönnen Sie die Typedef -Name CriticalSection. Sie sollten AutoCriticalSection in globale Objekte oder statische Klassenmember nicht angeben, wenn Sie den CRT-Startcode beseitigen wollen.
Beispiel
Der folgende Code stammt von CComObjectRootEx.
templatelt; Klasse ThreadModel >
CComObjectRootEx Klasse: öffentliche CComObjectRootBase
{
Öffentliche:
Typedef ThreadModel _ThreadModel;
Typedef _ThreadModel::AutoCriticalSection _CritSec;
ULONG InternalAddRef)
{
...
Rückkehr _ThreadModel::Increment(&m_dwRef);
}
...
void Lock () {M_critsec.«(Sperre); }
...
Privat:
_CritSec M_critsec;
}
Die folgenden Tabellen zeigen die Ergebnisse der InternalAddRef und Sperre Methoden, je nach ThreadModel Vorlagenparameter und die von der Anwendung verwendete Threadmodell:
ThreadModel = CComObjectThreadModel
| Einzel- oder Wohnung | Kostenlos | |
| InternalAddRef | Die Schrittweite ist nicht Thread-sicher. | Die Schrittweite ist Thread-sicher. |
| Sperre | Nichts; Es gibt keine kritischer Abschnitt Sperren. | Der kritische Abschnitt gesperrt ist. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| Einzel- oder Wohnung | Kostenlos | |
| InternalAddRef | Die Schrittweite ist nicht Thread-sicher. | Die Schrittweite ist Thread-sicher. |
| Sperre | Nichts; Es gibt keine kritischer Abschnitt Sperren. | Nichts; Es gibt keine kritischer Abschnitt Sperren. |
Suche&n Übersicht |nbsp; Klassenmember
Siehe auch&Nbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModelNoCS