typeDef CComAutoCriticalSection AutoCriticalSection;
Observaciones
Cuando se utiliza CComMultiThreadModel, el nombre de typedef AutoCriticalSection hace referencia a clase CComAutoCriticalSection, que proporciona métodos para obtener y liberar la propiedad de un objeto de la sección crítica.
CComSingleThreadModel y CComMultiThreadModelNoCS también contienen definiciones de AutoCriticalSection. La siguiente tabla muestra la relación entre la referencia de clase de sección crítica por AutoCriticalSection y la clase de modelo de subprocesamiento:
| Clase definida en | Clase hace referencia a |
| CComMultiThreadModel | CComCriticalSection |
| CComSingleThreadModel | CComFakeCriticalSection |
| CComMultiThreadModelNoCS | CComFakeCriticalSection |
Además de AutoCriticalSection, puede utilizar el nombre de typedef CriticalSection. No se debe especificar AutoCriticalSection en objetos globales o los miembros de la clase estática si desea eliminar el código de inicio de CRT.
Ejemplo
El código siguiente está tomado de CComObjectRootEx.
templatelt; clase ThreadModel >
clase CComObjectRootEx: CComObjectRootBase pública
{
público:
TypeDef ThreadModel _ThreadModel;
TypeDef _ThreadModel::AutoCriticalSection _CritSec;
ULONG InternalAddRef)
{
...
Return _ThreadModel::Increment(&m_dwRef);
}
...
anular (bloqueo) {m_critsec.() De bloqueo; }
...
privado:
_CritSec m_critsec;
}
Las siguientes tablas muestran los resultados de los métodos InternalAddRef y bloqueo , dependiendo del parámetro de plantilla ThreadModel y el modelo de subprocesamiento utilizado por la aplicación:
ThreadModel = CComObjectThreadModel
| Único o apartamento | Libre | |
| InternalAddRef | El incremento no es segura para subprocesos. | El incremento es segura para subprocesos. |
| Bloqueo | No hace nada; no hay ninguna sección crítica para bloquear. | La sección crítica está bloqueada. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
| Único o apartamento | Libre | |
| InternalAddRef | El incremento no es segura para subprocesos. | El incremento es segura para subprocesos. |
| Bloqueo | No hace nada; no hay ninguna sección crítica para bloquear. | No hace nada; no hay ninguna sección crítica para bloquear. |
Visió&n General de CComMultiThreadModel |nbsp; Miembros de clase
Vea tambiénnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS