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