哈喽!大家好,很高兴又见面了,我是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?》,本文主要会讲到
等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!,
当前位置: > > > > ## singleflight.Do 中 shared 参数为何总是返回 true?
## singleflight.Do 中 shared 参数为何总是返回 true?
2024-10-30 17:39:56
0浏览
收藏
哈喽!大家好,很高兴又见面了,我是GOLANG的一名作者,今天由我给大家带来一篇《## singleflight.Do 中 shared 参数为何总是返回 true?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!
singleflight.Do返回shared参数的问题
使用singleflight.Do第三个参数时遇到了疑惑,为什么返回值shared总是true?
背景
singleflight.Do函数有三个参数:
- key:用于标识数据库查询
- do:要执行的函数(在本例中为查询Mysql)
- shared:布尔值,表示查询结果是否在多个调用者之间共享
问题
按照惯例,至少有一个调用者的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公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
- 如何使用媒体查询实现精确的样式控制,包括大于、等于、小于三种条件?
- Vue 中 Deep 样式为何不生效?