Last active
February 21, 2019 06:00
-
-
Save yshrsmz/cf9c53bac9b07b3ca02c1286ea796ad1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.codingfeline.sample | |
import co.touchlab.stately.concurrency.ThreadLocalRef | |
import co.touchlab.stately.concurrency.value | |
import kotlinx.coroutines.CoroutineDispatcher | |
import kotlinx.coroutines.Runnable | |
import platform.darwin.dispatch_async | |
import platform.darwin.dispatch_get_main_queue | |
import platform.darwin.dispatch_queue_t | |
import kotlin.coroutines.CoroutineContext | |
import kotlin.native.concurrent.freeze | |
import kotlin.native.concurrent.isFrozen | |
import kotlin.test.Test | |
class FreezedFunTest { | |
data class JobWrapper<B>(val backJob: () -> B, val mainJobLocal: ThreadLocalRef<(B) -> Unit>) | |
data class JobWrapper2<B>(val backJob: () -> B, val mainJob: (B) -> Unit) | |
class Obj(var value: String) | |
@Test | |
fun test() { | |
val ref = ThreadLocalRef<(Obj) -> Unit>() | |
ref.set { obj -> println("obj: $obj") } | |
val jw = JobWrapper({ Obj("param") }, ref).freeze() | |
println("JobWrapper: ${jw.isFrozen}") | |
println("JobWrapper.backJob: ${jw.backJob.isFrozen}") | |
println("JobWrapper.mainJobLocal: ${jw.mainJobLocal.isFrozen}") | |
println("JobWrapper.mainJobLocal.value: ${jw.mainJobLocal.value.isFrozen}") | |
val jw2 = JobWrapper2({ Obj("param") }, { obj -> println("obj: $obj") }).freeze() | |
println("JobWrapper2: ${jw2.isFrozen}") | |
println("JobWrapper2.backJob: ${jw2.backJob.isFrozen}") | |
println("JobWrapper2.mainJobLocal: ${jw2.mainJob.isFrozen}") | |
println("JobWrapper2.mainJobLocal.value: ${jw2.mainJob.isFrozen}") | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
JobWrapper: true | |
JobWrapper.backJob: true | |
JobWrapper.mainJobLocal: true | |
JobWrapper.mainJobLocal.value: false | |
JobWrapper2: true | |
JobWrapper2.backJob: true | |
JobWrapper2.mainJobLocal: true | |
JobWrapper2.mainJobLocal.value: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment