donegroup.WithCancel
とwait
の関連がわかりやすい。cancel
とwait
でわかりやすい
ctx, cencel wait := donegroup.WithCancel(ctx)
だけをみるととても良い
donegroup.Wait(ctx)
というよりも donegroup.WaitWithCancel(ctx, timeout)
や donegroup.WaitWithContext(ctx, ctxx)
のため。
「クリーンアップの処理のタイムアウトの実現」や「シグナルによるWaitの解除」がユースケース
donegroup.WithCancelWithCancel(ctx, timeout)
も考えられるが、メソッド名が大変なことになりそう( WithCancelCauseAndKeyWithContext
とか意味がわからない)
donegroup.WithCancel(ctx context.Context, opts...donegroup.Option)
とかにすれば良さそうに見える。
一方で、「タイムアウトの設定」はWait関数の設定と言えるので、果たしてdonegroup.WithCancel側に持つべきかをまだ判断できていない。