File tree 3 files changed +27
-21
lines changed
reactive/kotlinx-coroutines-rx2
3 files changed +27
-21
lines changed Original file line number Diff line number Diff line change @@ -114,22 +114,23 @@ private class SchedulerChannelTask(
114
114
parentJob : Job
115
115
) : Disposable {
116
116
private val taskScope = CoroutineScope (dispatcher + Job (parentJob))
117
- private val delayJob : Job
117
+ private val delayResult : Deferred < Unit >
118
118
119
119
init {
120
- delayJob = taskScope.launch {
120
+ delayResult = taskScope.async {
121
121
delay(delayMillis)
122
122
}
123
123
}
124
124
125
125
fun execute () {
126
- if (delayJob.isCompleted && taskScope.isActive) {
127
- block.run ()
128
- } else {
129
- taskScope.launch {
130
- delayJob.join()
131
- yield ()
126
+ if (taskScope.isActive) {
127
+ if (delayResult.isCompleted) {
132
128
block.run ()
129
+ } else {
130
+ taskScope.launch {
131
+ delayResult.await()
132
+ block.run ()
133
+ }
133
134
}
134
135
}
135
136
}
Original file line number Diff line number Diff line change @@ -42,14 +42,17 @@ class SchedulerStressTest : TestBase() {
42
42
val n = 2000 * stressTestMultiplier
43
43
coroutineScope {
44
44
repeat(n) { i ->
45
- val a = ByteArray (1000000 ) // 1MB
46
- val disposable = block(Runnable {
47
- runBlocking {
48
- keepMe(a)
49
- }
50
- })
51
- disposable.dispose()
52
- expect(i + 2 )
45
+ launch {
46
+ val a = ByteArray (1000000 ) // 1MB
47
+ val disposable = block(Runnable {
48
+ expectUnreached()
49
+ runBlocking {
50
+ keepMe(a)
51
+ }
52
+ })
53
+ disposable.dispose()
54
+ expect(i + 2 )
55
+ }
53
56
yield ()
54
57
}
55
58
}
Original file line number Diff line number Diff line change @@ -313,11 +313,13 @@ class SchedulerTest : TestBase() {
313
313
val iterations = 2
314
314
coroutineScope {
315
315
for (i in (0 .. iterations)) {
316
- suspendCancellableCoroutine<Unit > {
317
- worker.schedule(Runnable {
318
- expect(2 + i)
319
- it.resume(Unit )
320
- })
316
+ launch {
317
+ suspendCancellableCoroutine<Unit > {
318
+ worker.schedule(Runnable {
319
+ expect(2 + i)
320
+ it.resume(Unit )
321
+ })
322
+ }
321
323
}
322
324
}
323
325
}
You can’t perform that action at this time.
0 commit comments