Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away