在 Kotlin Native 中提供依赖项时 Koin 的行为是什么?

What's Koin's Behavior when providing dependencies in Kotlin Native?

由于 Kotlin Native 有不同的线程模型,我想知道 Koin 3.0 是如何在 Kotlin Native 中提供它的依赖项的?它的行为是否像 @ThreadLocal 那样只提供依赖项的副本?还是像 Atomic Reference?

一样处理

Kotlin/Native 中的 Koin 运行 将注入状态或与 Koin 的交互完全限制到主线程。这允许 Koin 内部避免 AtomicReference,并避免冻结您创建的状态。但是,你不能直接从其他线程注入。

Kotlin/Native 的 Koin 内部结构有几种不同的设计。第一个版本将所有内容保持在冻结状态并可从所有线程访问,但实际上,至少对于原生移动设备而言,大多数注入发生在主线程上。将 Koin 保持在主线程上意味着它不会自动冻结您的状态。

这种设计显然会随着内存模型的变化而放宽,但我预计新的内存模型要到明年某个时候才能投入生产。