2014-03-27 22 views
5

A Barrier在同步世界允許線程等待其他線程到達某個點。計數信號允許n個線程訪問共享資源。是sync.WaitGroup一個Barrier的實現嗎?

因此,sync.WaitGroup是一個障礙&計數信號量(但沒有任何共享資源的概念)之間的交叉。這是一個精確的心智模型嗎?

回答

5

許多事情都可以用作障礙。在去,最習慣的障礙是一個渠道。如果你有一個以上的goroutine,那麼等待組可能會很有用。

儘管waitgroup可以用作處理線程(goroutines)的屏障,但這並不是一切。您可以將N個作業發送到M個例程,然後使用waitgroup跟蹤作業而不是完成的例程。

等待組的目的只是等待您期望發生的事件數量。這可能是因爲goroutines到達了代碼中的某個地方,工作已經完成,或者你只是覺得喜歡它。如果你的心智模型只是一個障礙,它會限制你的使用。

相關問題