【发布时间】:2010-10-06 08:09:47
【问题描述】:
我正在使用 ACE 框架,但我会尝试在不参考它的情况下描述我的问题。
我有一个事件处理程序(从 ACE_Event_Handler 派生的类)。 对事件处理程序的引用由 shared_ptr 映射中的某个管理器类持有。
在某个时间点我想:
- 从管理器映射中删除事件处理程序
- 事件处理程序的某些方法应由持有指向事件处理程序的行指针的第 3 个类调用(对于熟悉 ACE 的人,它是由 ACE Reactor 调用的 handle_close())
问题是订单(1)和(2)没有被承诺。如果 (1) 在 (2) 之前调用,则 (2) 将作用于悬空事件处理程序。
所以我考虑添加一些对事件处理程序的额外引用,这些引用将在 (2) 中递减。
如何做到这一点? 是否可以从事件处理程序本身内部维护对事件处理程序的引用(可能使用 enable_shared_from_this)?
谢谢
【问题讨论】:
标签: boost shared-ptr ace