可变共享流量-重播和extraBufferCapacity之间的差异



MutableSharedFlow采用3个参数:重放、extraBufferCapacity和onBufferOverflow。重播和extraBufferCapacity之间有什么区别?

文件中提到以下内容:

重播-重播给新订阅者的值的数量(不能为负数,默认为零(。

extraBufferCapacity-除了重播之外缓冲的值的数量。在剩余缓冲区空间时,emit不会挂起(可选,不能为负数,默认为零(。

我不清楚2和我们何时需要额外的BufferCapacity>0。extraBufferCapacity只是发射器的额外重放容量吗?

extraBufferCapacity只是发射器的额外重放容量吗?

;重放";术语只对订阅者有意义,而对发射器没有意义。replay参数定义新订户在订阅时将接收多少过去的值。这显然意味着需要存储这些值,所以整个缓冲区至少需要这么大。

但是,缓冲区大小(作为一个整体(会影响发射器。满缓冲区的确切结果取决于onBufferOverflow,但此缓冲区大小可用于控制发射器上的背压(减慢它们的速度(或我们如何丢弃消息。使用更大的缓冲区,可以像任何常规缓冲区一样,允许发射器在不减慢发射速度的情况下进行发射。

现在,选择更大的缓冲区不应该强迫您向新的订阅者重播这些缓冲值,因此extraBufferCapacity。使用extraBufferCapacity > 0,您可以定义任何所需大小的缓冲区,而不必强制您重放尽可能多的值,只需使用以下公式:

bufferSize = replay + extraBufferCapacity

例如,您可以决定根本不向新的订阅者重播任何值,但仍然允许来自发射器的突发,方法是具有一些(非重播(缓冲区。

最新更新