Skip to content

Commit bb05033

Browse files
committed
Update
1 parent 4e524e0 commit bb05033

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

examples/async/gate/main.go

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -64,32 +64,35 @@ func run(pCtx context.Context) context.Context {
6464
func proc(_ context.Context) error {
6565
var (
6666
gate = NewGate()
67-
wg sync.WaitGroup
6867
)
68+
for range 2 {
69+
var (
70+
wg sync.WaitGroup
71+
)
72+
73+
gate.Reset()
74+
75+
// 10個のゴルーチンがゲート前に待機する
76+
for i := range 10 {
77+
wg.Add(1)
78+
go func(i int) {
79+
defer wg.Done()
80+
81+
log.Printf("[%2d] 待機開始", i)
82+
gate.Await()
83+
log.Printf("[%2d] 待機解除", i)
84+
}(i)
85+
}
6986

70-
// 10個のゴルーチンがゲート前に待機する
71-
for i := range 10 {
72-
wg.Add(1)
73-
go func(i int) {
74-
defer wg.Done()
87+
// 何か準備処理などを行っているとする
88+
<-time.After(time.Second)
89+
log.Println("-------------------------------------")
7590

76-
log.Printf("[%2d] 待機開始", i)
77-
gate.Await()
78-
log.Printf("[%2d] 待機解除", i)
79-
}(i)
91+
// ゲートを開き、待機解除したゴルーチン達が全完了するのを待つ
92+
gate.Open()
93+
wg.Wait()
94+
log.Println("*************************************")
8095
}
8196

82-
// 何か準備処理などを行っているとする
83-
<-time.After(time.Second)
84-
log.Println("-------------------------------------")
85-
86-
// ゲートを開き、待機解除したゴルーチン達が全完了するのを待つ
87-
gate.Open()
88-
wg.Wait()
89-
90-
// 一度開いたゲートは開きっぱなしになるため、開いた後のAwait呼び出しは即座に返る.
91-
gate.Await()
92-
gate.Await()
93-
9497
return nil
9598
}

0 commit comments

Comments
 (0)