QH
Size: a a a
QH
QH
private val ref = AtomicReference<Deferred<Unit>>(null)
fun CoroutineScope.get(): Deferred<Unit> = ref.get() ?: run {
var d: CompletableDeferred<Unit>
if (ref.compareAndSet(null, CompletableDeferred<Unit>().also { d = it })) {
launch {
TODO()
d.complete(Unit)
}
d
} else { // race
ref.get()!!
}
}
QH
AM
NK
private val ref = AtomicReference<Deferred<Unit>>(null)
fun CoroutineScope.get(): Deferred<Unit> = ref.get() ?: run {
var d: CompletableDeferred<Unit>
if (ref.compareAndSet(null, CompletableDeferred<Unit>().also { d = it })) {
launch {
TODO()
d.complete(Unit)
}
d
} else { // race
ref.get()!!
}
}
NK
AN
AM
NK
private val ref = AtomicReference<Deferred<Unit>>(null)
fun CoroutineScope.get(): Deferred<Unit> = ref.get() ?: run {
var d: CompletableDeferred<Unit>
if (ref.compareAndSet(null, CompletableDeferred<Unit>().also { d = it })) {
launch {
TODO()
d.complete(Unit)
}
d
} else { // race
ref.get()!!
}
}
NK
QH
QH
RM
AM
NK
AN
AM
NK
NK
QH