IHttpCacheSpecificData::D ereferenceCacheData 方法
递减缓存数据的内部引用计数。
语法
virtual VOID DereferenceCacheData(
VOID
) = 0;
参数
此方法不采用参数。
线程安全性
实现 IHttpCacheSpecificData 接口的类对于 和 ReferenceCacheData 方法是DereferenceCacheData
线程安全的。
备注
实现 接口的 IHttpCacheSpecificData
类使用线程安全的引用计数进行内存管理。 IHttpCacheSpecificData
构造指针时,成员变量 (private
内部引用计数) 设置为 1。 ReferenceCacheData
调用 方法时,此引用计数递增 1。 DereferenceCacheData
调用 方法时,相同的引用计数将递减 1。 仅当引用计数为 0 时,指针才会 IHttpCacheSpecificData
从堆中删除。 此方案保证在 IHttpCacheSpecificData
指针的最后一个客户端调用 DereferenceCacheData
之前不会删除指针。
实现者须知
ReferenceCacheData
和 DereferenceCacheData
方法实现对于接口应是IHttpCacheSpecificData
线程安全的。 实现者应提供 protected
或 private
析构函数,这些函数仅在引用计数为 0 时在内部调用。
对调用者的说明
客户端不应尝试将接口强制转换为 IHttpCacheSpecificData
更具体的类,然后直接调用 delete
。 相反,当检索到接口的ReferenceCacheData
指针时,客户端应恰好调用方法一IHttpCacheSpecificData
次,然后在不再访问指针时IHttpCacheSpecificData
调用 DereferenceCacheData
方法。 应尽早和尽可能晚地调用 ReferenceCacheData
和 DereferenceCacheData
方法,以确保 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;
}
要求
类型 | 说明 |
---|---|
客户端 | - Windows Vista 上的 IIS 7.0 - Windows 7 上的 IIS 7.5 - Windows 8 上的 IIS 8.0 - Windows 10 上的 IIS 10.0 |
服务器 | - Windows Server 2008 上的 IIS 7.0 - Windows Server 2008 R2 上的 IIS 7.5 - Windows Server 2012 上的 IIS 8.0 - Windows Server 2012 R2 上的 IIS 8.5 - Windows Server 2016 上的 IIS 10.0 |
产品 | - 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 |
Header | Httpserv.h |
另请参阅
IHttpCacheSpecificData 接口
IHttpFileInfo 接口
IHttpTokenEntry 接口