go锁-waitgroup

go锁-waitgroup_第1张图片

go锁-waitgroup_第2张图片

go锁-waitgroup_第3张图片

go锁-waitgroup_第4张图片go锁-waitgroup_第5张图片

如果被等待的协程没了,直接返回
否则,waiter加一,陷入sema

go锁-waitgroup_第6张图片

go锁-waitgroup_第7张图片

go锁-waitgroup_第8张图片

add counter
被等待协程没做完,或者没人在等待,返回
被等待协程都做完,且有人在等待,唤醒所有sema中的协程

WaitGroup实现了一组协程等待另一组协程
等待的协程陷入sema并记录个数
被等待的协程计数归零时,唤醒所有sema中的协程

你可能感兴趣的:(Go,go)