singleflight中的shared参数始终为true的问题
在使用singleflight并发库时,用户有时会遇到shared参数总是返回true的问题。shared参数用于指示返回的结果是否在多个调用者之间共享。
要理解这一点,首先需要明确singleflight如何工作。singleflight是一个并发库,它允许多个协程并行执行相同的工作,但只执行一次。它通过使用map来存储正在进行和已完成的工作。
当一个协程调用singleflight.Do函数时,它将键和要执行的工作作为参数传递。如果工作已经完成,则函数将立即返回缓存的结果。如果工作正在进行,则函数将等待它完成并返回结果。
shared参数的问题
shared参数指示返回的结果是否在多个调用者之间共享。如果多个协程调用singleflight.Do函数,并且结果已被缓存,则shared参数将为true。
在给出的代码示例中,8个协程同时调用singleflight.Do函数。由于没有协程在执行工作时,因此shared参数始终为true。这是因为singleflight保证只执行一次工作,并且始终返回缓存的结果。
理解问题
singleflight中的shared参数并不表示结果是否由多个调用者使用。它只表示结果是否在多个调用者之间共享。换句话说,shared参数为true并不意味着多个调用者实际使用结果,它只是意味着结果已经被缓存,并且可以被多个调用者使用。
在大多数情况下,shared参数将为true,因为singleflight旨在减少重复工作。但是,在某些情况下,shared参数可能为false,例如,当另一个协程在第一个协程返回结果之前完成工作时。
以上就是## singleflight 中 shared 参数始终为 true 的问题:为什么缓存结果总是被共享?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号