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