IHttpCacheSpecificData::ReferenceCacheData 方法

递增缓存数据的内部引用计数。

语法

virtual VOID ReferenceCacheData(  
   VOID  
) = 0;  

参数

此方法不采用参数。

线程安全性

实现 IHttpCacheSpecificData 接口的类是 DereferenceCacheDataReferenceCacheData 方法的线程安全类。

备注

实现 接口的 IHttpCacheSpecificData 类使用对内存管理而言是线程安全的引用计数。 IHttpCacheSpecificData构造指针时,内部引用计数 (private成员变量) 设置为 1。 ReferenceCacheData调用 方法时,此引用计数将递增 1。 DereferenceCacheData调用 方法时,同一引用计数将递减 1。 仅当引用计数为 0 时, IHttpCacheSpecificData 才会从堆中删除指针。 此方案保证在指针 IHttpCacheSpecificData 的最后一个客户端调用 DereferenceCacheData之前不会删除指针。

实现者须知

ReferenceCacheDataDereferenceCacheData 方法实现对于接口应是IHttpCacheSpecificData线程安全的。 实现者应提供 protectedprivate 析构函数,仅在引用计数为 0 时在内部调用。

对调用者的说明

客户端绝不应尝试将指针强制转换为 IHttpCacheSpecificData 更具体的类,然后直接调用 delete 。 当检索到接口的ReferenceCacheData指针时,客户端应恰好调用方法一IHttpCacheSpecificData次,然后在不再访问指针时IHttpCacheSpecificData调用DereferenceCacheData方法。 应分别尽早和尽可能晚地调用 ReferenceCacheDataDereferenceCacheData 方法,以确保 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 接口