【问题标题】:rxcpp: Automatically unsubscribe when out of scoperxcpp:超出范围时自动取消订阅
【发布时间】:2021-10-14 16:21:23
【问题描述】:

虽然rxcpp::composite_subscription 有一个方法unsubscribe 但它不会在销毁时调用它。

rxcpp 库是否包含在对象超出范围时自动调用unsubscribe 的类?

【问题讨论】:

  • 这是一个弱订阅,你不必关心取消订阅。
  • 你能解释一下什么是弱订阅吗?
  • 10 年后,但我不知何故来到了这里。什么@SM说的是它充当了一个弱指针。

标签: c++ rxcpp


【解决方案1】:

订阅没有在其析构函数中调用unsubscribe()的原因是因为它是一个取消句柄,而不是一个RAII对象。订阅对象可以被复制,也可以被丢弃。

如果订阅析构函数取消订阅,那么放弃订阅将取消工作。这不是订阅合同。保持订阅活动不会使工作保持活动状态,并且丢弃订阅不会停止或破坏工作(这是在 cmets 中正确提到的弱生命周期)

这里真正的问题是 rxcpp 以与其他 rx 库相同的方式对生命周期进行建模。这些库使用 GC 来管理生命周期。

正在构建一个新库,该库已进行更改以支持结构化并发和非 GC 生命周期。 Lewis Baker 和 Eric Neibler 的演讲和论文解释了Single 表格。经典的 rx 值序列现在正在原型化中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2019-02-11
    • 2021-02-25
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多