LoginSignup
27
20

More than 5 years have passed since last update.

Goでチャネルにブロードキャストするにはcloseを使う

Last updated at Posted at 2014-09-21

クローズされたチャネルはゼロ値が常に送られてくるチャネルのように振る舞うので、これを利用して、チャネルの受信側に一斉通知するためにcloseを使うことができる。

チャネルがクローズされるとそのチャネルで待っているgoroutine(複数でも良い)は一斉にアンブロックされてゼロ値を受け取ることになる。

ブロックしているgoroutineの数だけ通常の値を送って全員を起こしてもよいけど、それだと何個のgoroutineが待っているのかという知識が必要になってしまうし、数え終わった後、かつ値を送る前に、ブロックしているgoroutineが増えるといけないので排他制御も必要になってしまう。これに対してチャネルをクローズする方法はただクローズすればよいだけなので使うのが簡単。

27
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
20