首页  >  文章  >  后端开发  >  为什么对 WaitGroup.Done 使用指针,而不对 WaitGroup.Add 和 WaitGroup.Wait 使用指针?

为什么对 WaitGroup.Done 使用指针,而不对 WaitGroup.Add 和 WaitGroup.Wait 使用指针?

Susan Sarandon
Susan Sarandon原创
2024-11-20 00:28:02772浏览

Why Use a Pointer for WaitGroup.Done but Not for WaitGroup.Add and WaitGroup.Wait?

WaitGroups 参考中的指针和变量

在sync 包中,函数 Add、Done 和 Wait 都是通过指向 WaitGroup 的指针来调用的:

  • Add 将等待计数增加给定的增量。
  • 完成递减等待计数。
  • Wait 阻塞,直到等待计数为零。

在提供的代码片段中,使用指针变量调用 Done 函数,而 Add 和 Wait使用变量(而不是指针)调用函数。

但是,所有三个函数都在同一个 WaitGroup 上调用 value.

  • wg 变量被声明为sync.WaitGroup 的值,但 Add使用解引用运算符在 wg (wg) 的地址上调用 、Done 和 Wait 方法()。
  • 这意味着所有三个函数都在同一个底层 WaitGroup 值上进行操作。
  • 唯一的区别是在 wg 的地址上调用 Done 以确保正在修改正确的 WaitGroup 值。

以上是为什么对 WaitGroup.Done 使用指针,而不对 WaitGroup.Add 和 WaitGroup.Wait 使用指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn