【发布时间】:2019-05-01 13:35:15
【问题描述】:
我有一个使用 Boehm GC 实现的个人项目。我需要实现一种事件类型,它应该包含对其他事件的引用。但是我还需要确保指向的事件仍然是可收集的,因此我需要弱引用。
假设我们有事件 A、B 和 C。我将这些事件配置为在发出信号时发出事件 X 的信号。这意味着 A、B 和 C 必须持有对事件 X 的引用。我想要的是,如果事件 X 不可访问,则事件 A、B 和 C 不再需要发出信号。因此,我想到的是弱引用。
还有其他方法可以做到这一点吗?我不想更改 GC,但如果有必要(分配界面保持干净)我可以。
该项目是用 C 编写的。如果需要,我会提供更多信息。值得注意的是,如果有任何方法可以直接使用这种语义实现此类事件,则不需要实际的弱引用(事件可能有一个引用周期,尽管它们没有发出信号)。
【问题讨论】: