Go
Goのcontextによるキャンセルやタイムアウト - oinume journal
context.WithCancel, WithTimeout で知っておいた方が良いこと - Carpe Diem
communicate
を5秒(タイムアウト値より長い)にする → タイムアウトして cannot print greeting: deadline exceeded
communicate
を3秒(helloのタイムアウト値より短い、goodbyeのタイムアウト値より長い)にする → helloは完了するがgoodbyeはタイムアウトする
communicate
を1秒(タイムアウト値より短い)にする → 両方完了する
親のcontextをキャンセルすると、子のcontextもキャンセルされる
⇒ printHelloがタイムアウト → 親の cancel()
を実行 → 子の ctx.Done()
が実行されてprintGoodbyeも終了する
cannot print greeting: context deadline exceeded
cannot print goodbye: context canceled