
godot.util.ThreadLocalDelegates.kt Maven / Gradle / Ivy
package godot.util
import kotlin.reflect.KProperty
internal class ThreadLocalLazyDelegate(private val provider: () -> T) : Lazy {
private val threadLocal = ThreadLocal.withInitial { lazy(LazyThreadSafetyMode.NONE, provider) }
override val value get() = threadLocal.get().value
override fun isInitialized(): Boolean = threadLocal.get().isInitialized()
}
internal class ThreadLocalDelegate(val provider: () -> T) {
private val threadLocal = ThreadLocal.withInitial { provider() }
operator fun getValue(thisRef: Any?, property: KProperty<*>): T = threadLocal.get()
}
internal fun threadLocalLazy(provider: () -> T) = ThreadLocalLazyDelegate(provider)
internal fun threadLocal(provider: () -> T) = ThreadLocalDelegate(provider)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy