Método IHttpCacheSpecificData::ReferenceCacheData
Incrementa a contagem de referência interna para os dados armazenados em cache.
Sintaxe
virtual VOID ReferenceCacheData(
VOID
) = 0;
Parâmetros
Este método não aceita parâmetros.
Acesso thread-safe
Classes que implementam a interface IHttpCacheSpecificData são thread safe para os métodos DereferenceCacheData e ReferenceCacheData
.
Comentários
As classes que implementam a IHttpCacheSpecificData
interface usam a contagem de referência que é thread-safe para gerenciamento de memória. Quando um IHttpCacheSpecificData
ponteiro é construído, a contagem de referência interna (uma private
variável de membro) é definida como 1. Quando o ReferenceCacheData
método é chamado, essa contagem de referência é incrementada em 1. Quando o DereferenceCacheData
método é chamado, essa mesma contagem de referência é decrementada por 1. Somente quando a contagem de referência vai para 0 é o IHttpCacheSpecificData
ponteiro removido do heap. Esse esquema garante que o IHttpCacheSpecificData
ponteiro não será excluído até que o último cliente desse ponteiro chame DereferenceCacheData
.
Notas para implementadores
As implementações do ReferenceCacheData
método e DereferenceCacheData
devem ser thread-safe para uma IHttpCacheSpecificData
interface. Os implementadores devem fornecer protected
ou private
destruidores que são chamados internamente somente quando a contagem de referência for para 0.
Observações para chamadores
Os clientes nunca devem tentar converter um IHttpCacheSpecificData
ponteiro para uma classe mais específica e, em seguida, chamar delete
diretamente. Em vez disso, os clientes devem chamar o ReferenceCacheData
método exatamente uma vez quando um ponteiro para uma IHttpCacheSpecificData
interface é recuperado e, em seguida, chamar o DereferenceCacheData
método quando o IHttpCacheSpecificData
ponteiro não será mais acessado. Você deve chamar os métodos e DereferenceCacheData
o ReferenceCacheData
mais cedo e o mais tarde possível, respectivamente, para garantir que um IHttpCacheSpecificData
ponteiro será válido no heap quando for acessado e excluído quando não for mais necessário.
Exemplo
O exemplo de código a seguir demonstra uma classe chamada MySpecificData
que implementa os IHttpCacheSpecificData
métodos.
// Create a class that implements the IHttpCacheSpecificData interface.
class MySpecificData : public IHttpCacheSpecificData
{
public:
// Create a public constructor.
// Set the internal reference count to 1.
MySpecificData ()
{
m_cRefs = 1;
}
// Increment the internal reference count.
virtual VOID ReferenceCacheData(VOID)
{
InterlockedIncrement(&m_cRefs);
}
// Decrement the internal reference count.
virtual VOID DereferenceCacheData(VOID)
{
// Decrement the reference count and delete this
// if the count is 0.
if (0 == InterlockedDecrement(&m_cRefs))
{
delete this;
}
}
// To do: implement custom MySpecificData implementation.
private:
// Create a private destructor called from DereferenceCacheData.
virtual ~MySpecificData ()
{
}
// Create a private reference count member.
LONG m_cRefs;
}
Requisitos
Type | Descrição |
---|---|
Cliente | - IIS 7.0 no Windows Vista - IIS 7.5 no Windows 7 - IIS 8.0 no Windows 8 - IIS 10.0 no Windows 10 |
Servidor | - IIS 7.0 no Windows Server 2008 - IIS 7.5 no Windows Server 2008 R2 - IIS 8.0 no Windows Server 2012 - IIS 8.5 no Windows Server 2012 R2 - IIS 10.0 no Windows Server 2016 |
Produto | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - IIS Express 7.5, IIS Express 8.0, IIS Express 10.0 |
parâmetro | Httpserv.h |