从品牌网站建设到网络营销策划,从策略到执行的一站式服务
type WaitGroup struct {
noCopy noCopy
state1 [3]uint32
}
其中state1代表三个字段:counter, waiter, sema
创新互联建站成立于2013年,先为南京等服务建站,南京等地企业,进行企业商务咨询服务。为南京企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
退出WaitGroup的条件
counter == 0
counter += n
counter > 0 || waiter == 0
,满足条件,说明当前还有groutine没有执行完,直接返回。counter == 0 && waiter != 0
,说明groutine全部执行了Done()方法,换醒执行了wg.Wait()的协程,将state设置成0,返回。counter == 0
,如果为true,说明groutine已经全部执行了Done()方法,Wait Done。counter != 0
,说明需要阻塞当前协程的执行,执行下面的CAS判断Done 的实现就是 Add. 只不过我们常规用法 wg.Add(1) 是加 1 ,wg.Done() 是减 1,即 wg.Done() 可以用 wg.Add(-1) 来代替。尽管我们知道 wg.Add 可以传递负数当 wg.Done 使用,但是还是别这么用。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图