ВС
Size: a a a
ВС
AN
QH
QH
NK
ВС
AM
AM
ВС
AM
NK
AM
NK
AM
AO
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()!!
}
}
AM
AM