gpt4 book ai didi

go - sync.WaitGroup 是 Barrier 的一个实现吗?

转载 作者:IT王子 更新时间:2023-10-29 01:27:17 24 4
gpt4 key购买 nike

A Barrier在同步世界中,允许线程等待其他线程到达某个点。计数信号量允许 n 个线程访问共享资源。

因此,sync.WaitGroup 是 Barrier 和计数信号量之间的交叉(但没有任何共享资源的概念)。这是一个准确的心智模型吗?

最佳答案

很多东西都可以作为障碍物。在围棋中,最惯用的障碍是 channel 。如果您有多个 goroutine 正在等待,那么 WaitGroup 会很有用。

虽然 WaitGroup 可以用作处理线程(goroutines)的屏障,但这并不是它能做的全部。您可以将 N 个作业发送到 M 个协程,然后让 WaitGroup 跟踪作业而不是已完成的协程。

WaitGroup 的目的只是等待您期望发生的事件数。这可能是因为 goroutines 到达了代码中的某个位置,工作已经完成,或者你只是喜欢它。如果您的心智模型仅将其视为障碍,则会限制您对它的使用。

关于go - sync.WaitGroup 是 Barrier 的一个实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com