rxcpp--composite_subscription
作用
composite
复合的,混合的。
RxCpp中的`composite_subscription`是一个用于管理多个订阅(subscriptions)的容器,它允许你将多个订阅组合在一起,然后通过一个`unsubscribe()`调用来取消所有这些订阅。这在需要同时取消多个订阅的场景下非常有用,比如在销毁一个对象时取消所有相关的异步操作。
1. **组合订阅**:可以将多个订阅添加到同一个`composite_subscription`对象中。
2. **统一取消**:调用`composite_subscription.unsubscribe()`会取消所有添加到其中的订阅。
3. **生命周期管理**:当`composite_subscription`对象被销毁时,它会自动取消所有订阅。
核心作用
-
批量订阅管理:将多个订阅组合在一起
-
统一取消机制:一次性取消所有关联订阅
-
生命周期控制:确保资源在不再需要时被释放
-
防止内存泄漏:避免忘记取消订阅导致资源滞留
RxCpp 的调度模型
-
observe_on_new_thread
:在新线程执行 -
observe_on_event_loop
:事件循环 -
synchronize_new_thread
:同步新线程
接口
unsubscribe()
取消所有订阅。
is_subscribed()
检查订阅组合容器是否仍有效。
is_subscribed()
是 composite_subscription
的核心状态查询方法,用于检查组合订阅是否仍处于活跃状态。
add()
`composite_subscription` 的 `add` 方法用于将一个订阅(`subscription` 对象)添加到组合中。此外,`add` 方法也可以接受一个可调用对象(例如 lambda 表达式),这个可调用对象会在组合订阅被取消时被调用(即执行清理操作)。这提供了一种在订阅取消时执行自定义操作的方式。