0
0

Channel実装時に気をつけたいこと

Posted at

はじめに

今回はCoroutineのひとつであるChannelについて気をつけておきたいことを紹介していきます

本文

まず、許容量です
Channel宣言時に下記のようにすることでChannelに対して幾つの値を詰めれるかを設定することができます

Channel<Hoge>(Channel.CONFLATED)

デフォルトだとRENDEZVOUSが設定されています
RENDEZVOUSsendrecieve各々が呼ばれるまで片方は止まり続けるのでスイッチに似た機構になっています
CONFLATEDは上書きされ、常に最新のものが入っている状態になります
基本的には上記二種類を使うのが一般的かと思います。

次に、closeです
これは値の更新や取り出しをこれ以上したくない場合に呼び出すのですが、意図しないタイミングで更新をしてしまった時などのために下記のようにしておくことでクラッシュしてしまうことを予防することができます

if (hoge.isClosedForReceive) {
    return
}

最後に

今回は自分がChannelを実装していて気をつけた方がいいなと感じた部分を紹介してみました
どなたかのお役に立てれば幸いです

0
0
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
0
0