はじめに
今回はCoroutine
のひとつであるChannel
について気をつけておきたいことを紹介していきます
本文
まず、許容量です
Channel
宣言時に下記のようにすることでChannel
に対して幾つの値を詰めれるかを設定することができます
Channel<Hoge>(Channel.CONFLATED)
デフォルトだとRENDEZVOUS
が設定されています
RENDEZVOUS
はsend
とrecieve
各々が呼ばれるまで片方は止まり続けるのでスイッチに似た機構になっています
CONFLATED
は上書きされ、常に最新のものが入っている状態になります
基本的には上記二種類を使うのが一般的かと思います。
次に、close
です
これは値の更新や取り出しをこれ以上したくない場合に呼び出すのですが、意図しないタイミングで更新をしてしまった時などのために下記のようにしておくことでクラッシュしてしまうことを予防することができます
if (hoge.isClosedForReceive) {
return
}
最後に
今回は自分がChannelを実装していて気をつけた方がいいなと感じた部分を紹介してみました
どなたかのお役に立てれば幸いです