Kotlin multiplatform で生成するコードでは、application block にすべてのコードが入っているので注意。

Jetpack compose for desktop でアプリケーションを書く場合、 https://kmp.jetbrains.com/ で最初のコードを生成すると思うのだが、こいつが生成するコードには少し癖がある。

fun main() = application {
        Window(onCloseRequest = ::exitApplication, state = rememberWindowState()) {
            mainApp.App()
        }
}

のようになっている。

application block は、Compose 側の都合で何回か呼ばれるので、普通の Kotlin app の感覚で、適当に中で Thread { }.start() とか雑に発行してると、スレッドが何個も作られて死ぬので注意。