leon hai 1 mes
pai
achega
87f23de5e9
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      src/nodes/base/base.hpp

+ 7 - 2
src/nodes/base/base.hpp

@@ -22,7 +22,7 @@ enum NODE_TYPE {
     DES_NODE,  // 输出节点
 };
 
-class BaseNode
+class BaseNode : public std::enable_shared_from_this<BaseNode>
 {
 public:
     BaseNode() = delete;
@@ -44,7 +44,12 @@ public:
     {
         std::unique_lock<std::mutex> lock(mutex_);
         // 设置回调,当数据push时通知当前节点
-        buffer->set_push_callback([this]() { cond_var_->notify_one(); });
+        std::weak_ptr<BaseNode> weak_self = shared_from_this();
+        buffer->set_push_callback([weak_self]() {
+            if (auto self = weak_self.lock()) {
+                self->cond_var_.notify_one();
+            }
+        });
         output_buffers_[name] = buffer;
     }