CNDEV
...
...
账号
登
登录
先
先随便看看
中国开发网
: 论坛:
程序员情感CBD
: 贴子 414724
茶壶
·
2006-10-05 09:49:16
·
阅读: 590
那要不,在_Release中,你另搞个单例对象标识一下。
这样,你检测的时候,不用调Interface了。
相关信息:
delphi 的接口,如果那个接口没人用了,我想把接口放进 Pool 里。问题是,TInterfacedObject 在接口计数减少的时候,没有任何的事件代码可以给我用。
(205字)
(
pcplayer
[1043]
2006-10-05 16:51
)
你想干什么?或者换一个问法,你想实现一个什么UseCase?
(空) (
茶壶
[638]
2006-10-05 16:56
)
其实就是想实现一个对象池。不过,我想用接口的办法。
(空) (
pcplayer
[493]
2006-10-05 16:58
)
那不用管什么_Release吧?
(210字)
(
茶壶
[977]
2006-10-05 17:05
)
GetPooledInterface时,取一个refCount较小的就行 -- 这个办法我想过,效率会比较低,可能。
(304字)
(
pcplayer
[614]
2006-10-05 17:18
)
那要不,在_Release中,你另搞个单例对象标识一下。
(24字)
(
茶壶
[589]
2006-10-05 17:49
)
想试一下用接口,主要是想利用接口的那个引用计数是自动的,大家都不用了,那个数字自动减少。
(空) (
pcplayer
[518]
2006-10-05 17:02
)
呵。其实也不是自动的。
(118字)
(
茶壶
[564]
2006-10-05 17:10
)
是啊。我就是想利用这个自动加减计数,这样程序里哪个地方忘记了释放也没关系了。但现在看来是利用不上。
(空) (
pcplayer
[609]
2006-10-05 17:14
)
用Semaphores模式呢?
(36字)
(
茶壶
[588]
2006-10-05 17:42
)
多谢!我认真读一下。
(空) (
pcplayer
[487]
2006-10-05 17:59
)
这篇文章我读了一下,他从 POOL 里找个空闲的出来,也是遍历搜索一个 RefCount = 1 的。我就是想避免遍历搜索。
(空) (
pcplayer
[563]
2006-10-06 00:15
)
定义一个对象记录之。你现在不就是要解决在两个List增删时的自调用的问题吗?
(139字)
(
茶壶
[653]
2006-10-06 01:04
)
不错
(6字)
(
好望角
[494]
2006-10-06 01:28
)
本来就是。吼吼。
(60字)
(
茶壶
[538]
2006-10-06 02:02
)
偶也不行
(8字)
(
好望角
[512]
2006-10-06 02:27
)
最简单的办法大概还是 destroy 那里,写个代码把自己丢进一个 List 里去,把自己从另外一个 List 里删除。
(空) (
pcplayer
[569]
2006-10-06 01:49
)
那你用Interface干什么?
(122字)
(
茶壶
[650]
2006-10-06 02:01
)
你可以不用TinterfaceObject
(21字)
(
好望角
[579]
2006-10-06 02:29
)
之前我一直都是用 TMyInterfacedObject --- 改造了一下,不会因为接口释放自动被销毁。
(空) (
pcplayer
[566]
2006-10-06 10:54
)
自己写的接口么?
(11字)
(
好望角
[569]
2006-10-05 20:23
)
嗯。覆盖对象的 destroy 是个办法。我总想着从接口里去找办法。
(空) (
pcplayer
[540]
2006-10-05 20:24
)
吼。直接得很。
(11字)
(
茶壶
[538]
2006-10-05 22:20
)
能完成任务就行
(15字)
(
好望角
[493]
2006-10-05 23:05
)
试验结果:在 destroy 里似乎不行。最后还是在 _Release 里搞定。现在有另外一个问题: 引用对象的效率和引用接口的效率,哪个更高?
(空) (
pcplayer
[581]
2006-10-06 16:23
)
Destroy为什么不行?
(35字)
(
好望角
[547]
2006-10-06 16:41
)
D7,如果我在 Destroy 里把自己的接口丢进 InterfaceList 里去,再从里面取出来接口的时候会直接出 AV 错误。当然丢进去后我直接 Exit 了,没有继续执行 ……
(空) (
pcplayer
[545]
2006-10-06 16:53
)
哦,你不应该用Exit
(47字)
(
好望角
[545]
2006-10-06 17:07
)
看了一下VCL,这样消耗太高了。
(32字)
(
好望角
[558]
2006-10-06 17:11
)
Abort 我试过是可以的。但 Abort 是引发异常,不光不释放,连后面的代码都不执行了。
(空) (
pcplayer
[555]
2006-10-06 17:23
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录