gpt4 book ai didi

android - MutableSharedFlow - replay 和 extraBufferCapacity 的区别

转载 作者:行者123 更新时间:2023-12-04 23:47:01 26 4
gpt4 key购买 nike

MutableSharedFlow 采用 3 个参数:replay、extraBufferCapacity 和 onBufferOverflow。 replay 和 extraBufferCapacity 有什么区别?
该文档提到以下内容:

replay - the number of values replayed to new subscribers (cannot be negative, defaults to zero).


extraBufferCapacity - the number of values buffered in addition to replay. emit does not suspend while there is a buffer space remaining (optional, cannot be negative, defaults to zero).


我不完全理解 2 和何时需要 extraBufferCapacity > 0 之间的区别。 extraBufferCapacity 只是发射器的额外重放能力吗?

最佳答案

Is extraBufferCapacity just an additional replay capacity for emitters?


“重播”术语只对订阅者有意义,而不是发射者。 replay参数定义新订阅者在订阅时将收到多少过去的值。这显然意味着需要存储这些值,因此整个缓冲区至少需要这么大。
但是,缓冲区大小(作为一个整体)会影响发射器。完整缓冲区的确切结果取决于 onBufferOverflow ,但是这个缓冲区大小可用于控制发射器的背压(减慢它们的速度)或我们如何丢弃消息。使用更大的缓冲区,您可以像任何常规缓冲区一样允许发射器在不减慢它们速度的情况下进行突发发射。
现在,选择更大的缓冲区不应该强制您将这些缓冲值重播给新订阅者,因此 extraBufferCapacity .与 extraBufferCapacity > 0 ,您可以定义任何所需大小的缓冲区,而无需强制您重放尽可能多的值,只需使用以下公式:
bufferSize = replay + extraBufferCapacity
例如,您可以决定根本不向新订阅者重播任何值,但仍然通过拥有一些(非重播)缓冲区来允许发射器的突发。

关于android - MutableSharedFlow - replay 和 extraBufferCapacity 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71309128/

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