Compartir a través de


Clase CComMultiThreadModelNoCS

CComMultiThreadModelNoCS proporciona métodos seguros para subprocesos para incrementar y decrementar el valor de una variable, sin una funcionalidad de bloqueo o desbloqueo de la sección crítica.

Sintaxis

class CComMultiThreadModelNoCS

Miembros

Definiciones de tipos públicas

Nombre Descripción
CComMultiThreadModelNoCS::AutoCriticalSection Hace referencia a la clase CComFakeCriticalSection.
CComMultiThreadModelNoCS::CriticalSection Hace referencia a la clase CComFakeCriticalSection.
CComMultiThreadModelNoCS::ThreadModelNoCS Hace referencia a la clase CComMultiThreadModelNoCS.

Métodos públicos

Nombre Descripción
CComMultiThreadModelNoCS::Decrement (Estático) Disminuye el valor de la variable especificada de forma segura para los subprocesos.
CComMultiThreadModelNoCS::Increment (Estático) Aumenta el valor de la variable especificada de forma segura para los subprocesos.

Comentarios

CComMultiThreadModelNoCS es similar a CComMultiThreadModel, ya que proporciona métodos seguros para subprocesos para incrementar y decrementar una variable. Sin embargo, al hacer referencia a una clase de sección crítica a través de CComMultiThreadModelNoCS, métodos como Lock y Unlock no harán nada.

Normalmente, se usa CComMultiThreadModelNoCS a través del ThreadModelNoCS typedef nombre. Esta typedef se define en CComMultiThreadModelNoCS, CComMultiThreadModel y CComSingleThreadModel.

Nota:

Los nombres de typedef globales CComObjectThreadModel y CComGlobalsThreadModel no hacen referencia a CComMultiThreadModelNoCS.

Además de ThreadModelNoCS, CComMultiThreadModelNoCS define AutoCriticalSection y CriticalSection. Estos dos últimos nombres de typedef hacen referencia a CComFakeCriticalSection, que proporciona métodos vacíos asociados a la obtención y a la liberación de una sección crítica.

Requisitos

Encabezado: atlbase.h

CComMultiThreadModelNoCS::AutoCriticalSection

Cuando se usa CComMultiThreadModelNoCS, el nombre de typedef AutoCriticalSection hace referencia a la clase CComFakeCriticalSection.

typedef CComFakeCriticalSection AutoCriticalSection;

Comentarios

Como CComFakeCriticalSection no proporciona una sección crítica, sus métodos no hacen nada.

CComMultiThreadModel y CComSingleThreadModel también contienen definiciones para AutoCriticalSection. En la tabla siguiente se muestra la relación entre la clase de modelo de subprocesos y la clase de sección crítica a la que hace referencia AutoCriticalSection:

Clase definida en Clase a la que se hace referencia
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Además de AutoCriticalSection, puede usar el nombre de typedef CriticalSection. No debe especificar AutoCriticalSection en objetos globales o miembros de clase estática si desea eliminar el código de inicio de CRT.

Ejemplo

Consulte CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::CriticalSection

Cuando se usa CComMultiThreadModelNoCS, el nombre de typedef CriticalSection hace referencia a la clase CComFakeCriticalSection.

typedef CComFakeCriticalSection CriticalSection;

Comentarios

Como CComFakeCriticalSection no proporciona una sección crítica, sus métodos no hacen nada.

CComMultiThreadModel y CComSingleThreadModel también contienen definiciones para CriticalSection. En la tabla siguiente se muestra la relación entre la clase de modelo de subprocesos y la clase de sección crítica a la que hace referencia CriticalSection:

Clase definida en Clase a la que se hace referencia
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Además de CriticalSection, puede usar el nombre de typedef AutoCriticalSection. No debe especificar AutoCriticalSection en objetos globales o miembros de clase estática si desea eliminar el código de inicio de CRT.

Ejemplo

Consulte CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::Decrement

Esta función estática llama a la función InterlockedDecrement de Win32, que disminuye el valor de la variable a la que apunta p.

static ULONG WINAPI Decrement(LPLONG p) throw();

Parámetros

p
[in] Puntero a la variable que se va a disminuir.

Valor devuelto

Si el resultado de la disminución es 0, Decrement devuelve 0. Si el resultado de la disminución es distinto de cero, el valor devuelto también es distinto de cero, pero puede no ser igual al resultado de la disminución.

Comentarios

InterlockedDecrement impide que más de un subproceso use simultáneamente esta variable.

CComMultiThreadModelNoCS::Increment

Esta función estática llama a la función InterlockedIncrement de Win32, que aumenta el valor de la variable a la que apunta p.

static ULONG WINAPI Increment(LPLONG p) throw();

Parámetros

p
[in] Puntero a la variable que se va a aumentar.

Valor devuelto

Si el resultado del incremento es 0, Increment devuelve 0. Si el resultado del incremento es distinto de cero, el valor devuelto también es distinto de cero, pero puede no ser igual al resultado del incremento.

Comentarios

InterlockedIncrement impide que más de un subproceso use simultáneamente esta variable.

CComMultiThreadModelNoCS::ThreadModelNoCS

Al usar CComMultiThreadModelNoCS, el nombre de typedef ThreadModelNoCS simplemente hace referencia a CComMultiThreadModelNoCS.

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

Comentarios

CComMultiThreadModel y CComSingleThreadModel también contienen definiciones para ThreadModelNoCS. En la tabla siguiente se muestra la relación entre la clase de modelo de subprocesos y la clase a la que hace referencia ThreadModelNoCS:

Clase definida en Clase a la que se hace referencia
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

Tenga en cuenta que la definición de ThreadModelNoCS en CComMultiThreadModelNoCS proporciona simetría con CComMultiThreadModel y CComSingleThreadModel. Por ejemplo, supongamos que el código de ejemplo de CComMultiThreadModel::AutoCriticalSection ha declarado la siguiente typedef:

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

Independientemente de la clase especificada para ThreadModel (por ejemplo, CComMultiThreadModelNoCS), _ThreadModel se resuelve como debe.

Ejemplo

Consulte CComMultiThreadModel::AutoCriticalSection.

Consulte también

Información general sobre la clase