FWQ
## singleflight.Do 中 shared 参数为何总是返回 true?
哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇 《## singleflight.Do 中 shared 参数为何总是返回 true?》,本文主要会讲到 等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!, , singleflight.Do返回shared参数的问题,使用singleflight.Do第三个参数时遇到了疑惑,为什么返回值shared总是true?, 背景,singleflight.Do函数有三个参数:, 问题,按照惯例,至少有一个调用者的shared参数应该返回false,因为这是协程独立执行查询的结果。然而,在提供的代码中,shared始终返回true。, 解决,问题在于对shared参数的理解。shared表示的是返回的val是否被多个调用者共享,而不是查询本身是否被共享。在给定的代码中,查询是由do函数执行的,而val是查询的结果。,因此,只有当val被多个调用者共享时,shared才会返回true。在本例中,val是在do函数中生成的一个整数。由于do函数是在每个调用者的协程中独立执行的,因此val只有当多个调用者同时执行do函数时才会被共享。, 结论,在上面的代码中,由于调用者之间没有并发执行do函数,因此shared始终返回true。如果要获得false,需要确保多个调用者同时执行do函数。,今天关于《## singleflight.Do 中 shared 参数为何总是返回 true?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!,do:要执行的函数(在本例中为查询Mysql),key:用于标识数据库查询,shared:布尔值,表示查询结果是否在多个调用者之间共享,singleflight.Do返回shared参数的问题,哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇 《## singleflight.Do 中 shared 参数为何总是返回 true?》,本文主要会讲到 等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!,…