Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin Coroutinesで共有リソースに正しくアクセスする

Kotlin Coroutinesで共有リソースに正しくアクセスする

Kotlin Coroutinesを使えば非同期処理を比較的簡単に書けますが、それでも複数のコルーチンから共有リソースにアクセスするときには最大限の注意を払う必要があります。

例えば、あるコルーチンで変数を読み込み、その値を元になにか操作を行い、結果をもとにその変数を上書きするとします。
その間に他のコルーチンによって値が書き換わることはないでしょうか?
その結果、予期せぬ不具合を引き起こしたりしないでしょうか?

正しく共有リソースを扱うためには、MutexやStateFlowのupdate関数など、それが考慮されたAPIをうまく組み合わせる必要があります。
また、1スレッドを使い回すディスパッチャと複数スレッドを使うディスパッチャがありますが、気をつけるべき点は異なります。
このセッションではどのようなコードで注意が必要なのか、また期待通りに動作させるための方法について紹介します。 

Kotlin Fest 2024 / Kotlin言語・プログラミング

Mori Atsushi

June 22, 2024
Tweet

More Decks by Mori Atsushi

Other Decks in Programming

Transcript

  1. MutexʹΑΔϩοΫ J εϨου εϨου   UFNQ  UFNQ 

      J  NVUFY ϩοΫ J    ϩοΫղআ ϩοΫதͷͨΊ଴ػ ϩοΫղআ ϩοΫ