首页 > 后端开发 > Golang > 正文

## singleflight 中 shared 参数始终为 true 的问题:为什么缓存结果总是被共享?

DDD
发布: 2024-10-26 08:31:05
原创
462人浏览过

## singleflight 中 shared 参数始终为 true 的问题:为什么缓存结果总是被共享?

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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号