Skip to content

Commit 151b54c

Browse files
committed
~Use atomicfu instead of AtomicLong for requested counter
1 parent 595bf11 commit 151b54c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

reactive/kotlinx-coroutines-reactive/src/FlowAsPublisher.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class FlowSubscription<T>(
4040
) : Subscription {
4141
@Volatile
4242
private var canceled: Boolean = false
43-
private val requested = AtomicLong(0L)
43+
private val requested = atomic(0L)
4444
private val producer = atomic<CancellableContinuation<Unit>?>(null)
4545

4646
// This is actually optimizable
@@ -69,10 +69,10 @@ public class FlowSubscription<T>(
6969
* No intermediate "child failed, but flow coroutine is not" states are allowed.
7070
*/
7171
coroutineContext.ensureActive()
72-
if (requested.get() == 0L) {
72+
if (requested.value == 0L) {
7373
suspendCancellableCoroutine<Unit> {
7474
producer.value = it
75-
if (requested.get() != 0L) it.resumeSafely()
75+
if (requested.value != 0L) it.resumeSafely()
7676
}
7777
}
7878
requested.decrementAndGet()
@@ -93,7 +93,7 @@ public class FlowSubscription<T>(
9393
var snapshot: Long
9494
var newValue: Long
9595
do {
96-
snapshot = requested.get()
96+
snapshot = requested.value
9797
newValue = snapshot + n
9898
if (newValue <= 0L) newValue = Long.MAX_VALUE
9999
} while (!requested.compareAndSet(snapshot, newValue))

0 commit comments

Comments
 (0)