今週は第69回を開催しました!
引き続きKotlin Hands-onをすすめています。
前回の様子はコチラ↓
[第69回の様子]
2021/6/23に第69回を開催した。
今週はさらに人が増えて、自分をいれて6名だった。
PC不調のため自分は当面ナビゲータ役で参加。
勉強会本編の内容としては、Kotlin/Native Concurrencyハンズオンの続きを実施した。第4章Global Stateを軽く読み直し、第5章Backgroundを改めてはじめから進めて3割くらい終わらせた。
[学んだことや疑問点]
- Kotlin/Native Concurrency: 4. Global State
- 復習。
- Kotlin(Kotlin/JVM)ではグローバルな変数はどのスレッドからでも参照できるが、Kotlin/Nativeの場合は特殊なルールがある
- オブジェクトとプロパティの2つ
- object:グローバルなインスタンスはfrozenであり、どのスレッドからでも参照できる
- property:メインスレッドからのみアクセス可能、かつ可変。別スレッドからアクセスすると、
IncorrectDereferenceException
が発生する - Kotlin/Native Concurrency: 5. Background
- まずは復習。
- Kotlin/Nativeで並列処理はWorkerを使う:Javaのスレッドのようなもの
- 第4章で扱ったbackground関数はWorkerを使っている、他の並列処理ライブラリも似たような感じ
- basicBackground()を実行してみると、メインスレッドかどうかがisMainThreadプロパティで取得できる。これは今回のハンズオン用に用意された簡易的な実装で、最初に登録したスレッドをメインスレッドとして扱っているだけの様子。
- 具体的な実装を追いかけてみたが、さらに別のライブラリのThreadRefというのを使用していて、詳細はよくわからなかった
[まとめ]
モブプログラミング・スタイルで、Kotlin/Native Concurrencyハンズオンを進めた。
Nativeの並列処理は大変そう……復習したけどあまり頭に入ってこない。
今週もプルリクエストなし。