等待组实施

时间:2011-11-29 21:06:06

标签: go

任何人都可以通过给出一个简单的示例代码来告诉我Wait Group如何工作或可以实现(如果像this那样给出更好的话)?感谢。

4 个答案:

答案 0 :(得分:0)

我不认为可以为您的示例实现等待组(或sync-mutex)。

答案 1 :(得分:0)

实施like this。 :)

答案 2 :(得分:0)

我找到了它的答案,即相互排除并发Go Routine。代码在http://play.golang.org/p/bdBRtA6vS7上。感谢。

答案 3 :(得分:0)

更简单的等待就像一个堆栈,您将一个项目放在堆栈上,然后在任务完成时将其弹出。 WaitGroup 将保存代码直到堆栈为空。请参阅下面的代码以获取简单的示例,应该能够提供帮助。它旨在管理作为 go 函数的多线程行为...

package main

import ("sync")

var (wg sync.WaitGroup )
func main() {
    wg.Add(1). //Push 1
    go func() {
        // Do some code here
        wg.Done() //pop 1
    }()
    wg.Add(1) //Push 1
    go func() {
        // Do some code here
        wg.Done() //pop 1
    }()
    wg.Add(1) //Push 1
    go func() {
        // Do some code here
        wg.Done() //Pop 1
    }()
    wg.Wait() // Until no more items to pop.
    //Do the rest of your code here.
}