浅谈引用计数
前言
作为Delphi程序员,您可以不用看这节内容,但是如果您想更多的了解一些COM内部技术,或是在对象模型与引用模型之间可以进行很好的控制的话,笔者更希望你可以抽出些许时间来看这一切的内容,而益处提体的将很明显,您可以自由的用一些技巧来解决让您头疼的问题。好了,继续我们今天的交流;
在组件技术必备知识二中,我们对接口(Interface)进行了一些介绍,当我们并没有深入的对接口的实现/效率/优化等问题进行进一步的禅述,而了解它们的确对于我们以后的编程是有很大的帮助的,我们都知道,每个接口都会维护一个全局变量FRefCount (这是Object Pascal里的变量名称,如果是在C 里,它维护的是m_CRef),它专门用来控制接口的生命周期,或是组件的生命周期(组件/接口同样具有生命周期),当然,我们也可以给接口强制给值Nil同样可以释放接口,但那是不安全的或是不应该被推荐的。在此处之所以将引用技术做为一个课题例出来就是希望各位可以对组件的优化、效率方面认识一些。而FRefCount是在_AddRef and _Release中得以实现的,如下代码(本节所有代码摘自Delphi6中,只要您的参考版本是Delphi4以上,代码都是相同的)。
function TInterfacedObject._AddRef: Integer;
begin
Result := InterlockedIncrement(FRefCount);
end;
function TInterfacedObject._Release: Integer;
begin
Result := InterlockedDecrement(FRefCount);
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




