Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
CComMultiThreadModelNoCS fornece métodos thread-safe para incrementar e decrementar o valor de uma variável, sem funcionalidade crítica de bloqueio ou desbloqueio de secções.
Sintaxe
class CComMultiThreadModelNoCS
Membros
Definições de Tipos Públicas
| Nome | Description |
|---|---|
| CComMultiThreadModelNoCS::AutoCriticalSection | Classe de referências CComFakeCriticalSection. |
| CComMultiThreadModelNoCS::Secção Crítica | Classe CComFakeCriticalSectionde referências . |
| CComMultiThreadModelNoCS::ThreadModelNoCS | Classe CComMultiThreadModelNoCSde referências . |
Métodos Públicos
| Nome | Description |
|---|---|
| CComMultiThreadModelNoCS::D ecrement | (Estática) Diminui o valor da variável especificada de forma segura para threads. |
| CComMultiThreadModelNoCS::Increment | (Estática) Incrementa o valor da variável especificada de forma segura para threads. |
Observações
CComMultiThreadModelNoCS é semelhante ao CComMultiThreadModel no sentido em que fornece métodos thread-safe para incrementar e decrementar uma variável. No entanto, quando referencias uma classe de secção crítica através de CComMultiThreadModelNoCS, métodos como Lock e Unlock não fazem nada.
Normalmente, usa-se CComMultiThreadModelNoCS através do ThreadModelNoCStypedef nome. Isto typedef é definido em CComMultiThreadModelNoCS, CComMultiThreadModel, e CComSingleThreadModel.
Observação
Os nomes globais typedefCComObjectThreadModel e CComGlobalsThreadModel não fazem referência CComMultiThreadModelNoCSa .
Além de ThreadModelNoCS, CComMultiThreadModelNoCS define AutoCriticalSection e CriticalSection. Estes dois typedef últimos nomes fazem referência ao CComFakeCriticalSection, que fornece métodos vazios associados à obtenção e libertação de uma secção crítica.
Requerimentos
Cabeçalho: atlbase.h
CComMultiThreadModelNoCS::AutoCriticalSection
Ao usar CComMultiThreadModelNoCS, o typedef nome AutoCriticalSection faz referência à classe CComFakeCriticalSection.
typedef CComFakeCriticalSection AutoCriticalSection;
Observações
Como CComFakeCriticalSection não fornece uma secção crítica, os seus métodos não fazem nada.
CComMultiThreadModel e CComSingleThreadModel também contêm definições para AutoCriticalSection. A tabela seguinte mostra a relação entre a classe do modelo de threading e a classe de secção crítica referenciada por AutoCriticalSection:
| Classe definida em | Classe referida |
|---|---|
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CComMultiThreadModel |
CComAutoCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
Além de AutoCriticalSection, pode usar o typedef nome Secção Crítica. Não deve especificar AutoCriticalSection em objetos globais ou membros estáticos da classe se quiser eliminar o código de arranque do CRT.
Example
Veja CComMultiThreadModel::AutoCriticalSection.
CComMultiThreadModelNoCS::Secção Crítica
Ao usar CComMultiThreadModelNoCS, o typedef nome CriticalSection faz referência à classe CComFakeCriticalSection.
typedef CComFakeCriticalSection CriticalSection;
Observações
Como CComFakeCriticalSection não fornece uma secção crítica, os seus métodos não fazem nada.
CComMultiThreadModel e CComSingleThreadModel também contêm definições para CriticalSection. A tabela seguinte mostra a relação entre a classe do modelo de threading e a classe de secção crítica referenciada por CriticalSection:
| Classe definida em | Classe referida |
|---|---|
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
Além de CriticalSection, pode usar o typedef nome AutoCriticalSection. Não deve especificar AutoCriticalSection em objetos globais ou membros estáticos da classe se quiser eliminar o código de arranque do CRT.
Example
Veja CComMultiThreadModel::AutoCriticalSection.
CComMultiThreadModelNoCS::D ecrement
Esta função estática chama à função Win32 InterlockedDecrement, que decremente o valor da variável apontada por p.
static ULONG WINAPI Decrement(LPLONG p) throw();
Parâmetros
p
[dentro] Apontar para a variável a decrementar.
Valor de retorno
Se o resultado da decremento for 0, então Decrement retorna 0. Se o resultado do decremento for diferente de zero, o valor de retorno também é diferente de zero, mas pode não ser igual ao resultado do decremento.
Observações
InterlockedDecrement impede que mais do que um thread use simultaneamente esta variável.
CComMultiThreadModelNoCS::Increment
Esta função estática chama a função Win32 InterlockedIncrement, que incrementa o valor da variável apontada por p.
static ULONG WINAPI Increment(LPLONG p) throw();
Parâmetros
p
[dentro] Apontar para a variável a ser incrementada.
Valor de retorno
Se o resultado do incremento for 0, então o incremento devolve 0. Se o resultado do incremento for diferente de zero, o valor de retorno também é diferente de zero, mas pode não ser igual ao resultado do incremento.
Observações
O InterlockedIncrement impede que mais do que um thread use simultaneamente esta variável.
CComMultiThreadModelNoCS::ThreadModelNoCS
Ao usar CComMultiThreadModelNoCS, o typedef nome ThreadModelNoCS simplesmente faz referência CComMultiThreadModelNoCSa .
typedef CComMultiThreadModelNoCS ThreadModelNoCS;
Observações
CComMultiThreadModel e CComSingleThreadModel também contêm definições para ThreadModelNoCS. A tabela seguinte mostra a relação entre a classe do modelo de threading e a classe referenciada por ThreadModelNoCS:
| Classe definida em | Classe referida |
|---|---|
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComSingleThreadModel |
CComSingleThreadModel |
Note-se que a definição de ThreadModelNoCS em CComMultiThreadModelNoCS fornece simetria com CComMultiThreadModel e CComSingleThreadModel. Por exemplo, suponha que o código de exemplo em CComMultiThreadModel::AutoCriticalSection declara o seguinte typedef:
typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;
Independentemente da classe especificada para ThreadModel (como CComMultiThreadModelNoCS), _ThreadModel resolve em conformidade.
Example
Veja CComMultiThreadModel::AutoCriticalSection.