Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Уменьшает количество внутренних ссылок для кэшированных данных.
Синтаксис
virtual VOID DereferenceCacheData(
VOID
) = 0;
Параметры
Этот метод не принимает параметров.
Потокобезопасность
Классы, реализующие интерфейс IHttpCacheSpecificData , являются потокобезопасны для DereferenceCacheData методов и ReferenceCacheData .
Комментарии
Классы, реализующие IHttpCacheSpecificData интерфейс, используют подсчет ссылок, который является потокобезопасной для управления памятью. При построении IHttpCacheSpecificData указателя внутреннее число ссылок (переменная-член private ) устанавливается в значение 1. При вызове ReferenceCacheData метода это число ссылок увеличивается на 1. При вызове DereferenceCacheData метода это же число ссылок уменьшается на 1. Указатель удаляется из кучи только в том случае, если число ссылок равно 0 IHttpCacheSpecificData . Эта схема гарантирует, что IHttpCacheSpecificData указатель не будет удален до тех пор, пока последний клиент этого указателя не вызовет DereferenceCacheData.
Примечания для разработчиков
Реализации ReferenceCacheData методов и DereferenceCacheData должны быть потокобезопасны для IHttpCacheSpecificData интерфейса. Разработчики должны предоставлять protected деструкторы или private , которые вызываются внутренним образом, только если количество ссылок переходит к 0.
Примечания для абонентов
Клиенты никогда не должны пытаться привести IHttpCacheSpecificData интерфейс к более конкретному классу, а затем вызвать delete напрямую. Вместо этого клиенты должны вызывать ReferenceCacheData метод ровно один раз при извлечении указателя на IHttpCacheSpecificData интерфейс, а затем вызывать DereferenceCacheData метод, когда к указателю IHttpCacheSpecificData больше не будет доступа. Методы и DereferenceCacheData следует вызывать ReferenceCacheData как можно раньше и как можно позже, соответственно, чтобы гарантировать, что IHttpCacheSpecificData указатель будет действителен в куче при доступе к ней и удаляется, когда он больше не нужен.
Пример
В следующем примере кода демонстрируется класс с именем MySpecificData , который реализует методы IHttpCacheSpecificData .
// 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;
}
Требования
| Тип | Описание |
|---|---|
| клиент | — IIS 7.0 в Windows Vista — IIS 7.5 в Windows 7 — IIS 8.0 в Windows 8 — IIS 10.0 в Windows 10 |
| Сервер | — IIS 7.0 в Windows Server 2008 — IIS 7.5 в Windows Server 2008 R2 — IIS 8.0 в Windows Server 2012 — IIS 8.5 в Windows Server 2012 R2 — IIS 10.0 в Windows Server 2016 |
| Продукт | — 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 |
| Заголовок | Httpserv.h |
См. также:
Интерфейс IHttpCacheSpecificData
Интерфейс IHttpFileInfo
Интерфейс IHttpTokenEntry