File tree Expand file tree Collapse file tree 1 file changed +25
-22
lines changed
Expand file tree Collapse file tree 1 file changed +25
-22
lines changed Original file line number Diff line number Diff line change @@ -64,32 +64,35 @@ func run(pCtx context.Context) context.Context {
6464func 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}
You can’t perform that action at this time.
0 commit comments