1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package main import ( "context" "fmt" "time" "github.com/marusama/cyclicbarrier" ) func main() { b := cyclicbarrier.NewWithAction(3, func() error { fmt.Println("放行") return nil }) for i := 0; i < 3; i++ { go func(id int) { fmt.Printf("协程 %d 准备好了 \n", id) // 阻塞等待其它人 b.Await(context.Background()) fmt.Printf("协程 %d 通过栅栏 \n", id) }(i) } time.Sleep(5 * time.Second) } |

© 著作权归作者所有
文章评论(0)