godot.util.ThreadLocalDelegates.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of godot-library-debug Show documentation
Show all versions of godot-library-debug Show documentation
Contains godot api as kotlin classes and jvm cpp interaction code.
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 - 2024 Weber Informatics LLC | Privacy Policy