gpt4 book ai didi

c++ - 在析构函数中调用观察者是不好的做法吗?

转载 作者:太空狗 更新时间:2023-10-29 23:20:39 25 4
gpt4 key购买 nike

当一组任务完成时,我有一个发送信号的对象。这些任务在线程池中独立执行。我想在组中的所有任务完成时向观察者发送通知。

从本质上讲,这可以归结为引用计数方案。当 ref=0 时,我发送通知。一种实现方式是利用提升智能指针(或任何引用计数自动)。

class TaskCompletionNotifier {
~TaskCompletionNotifier() {
_listener->notify();
}

setListener(listener);

Listener _listener;
}

class Task {
boost::shared_ptr<TaskCompletionNotifier> _notifier;
}

我的问题是,在对象的析构函数中执行此调出是否是一种不好的做法?

最佳答案

这是天生的坏事吗?没有。

它是否会带来潜在的陷阱?是的。

确保你不允许任何异常逃脱析构函数,并且你最好确保 _listener->notify() 不会最终修改这个的任何成员数据object:它安全并且没问题,但可能会造成混淆和/或弄乱析构函数的关闭逻辑。

除此之外,继续吧。

关于c++ - 在析构函数中调用观察者是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com