kotlinx.coroutines
kotlinx.coroutines copied to clipboard
Library support for Kotlin coroutines
Jobs that are cancelled are expected to become garbage collectable. Unfortunately, TestCoroutineScheduler does not listen to any job cancellation signal. TestCoroutineScheduler keeps cancelled jobs in its queue (`TestCoroutineScheduler#events`) until the...
Do not merge, this PR is a repro case for https://github.com/Kotlin/kotlinx.coroutines/issues/3398
@julioyg found an interesting bug(?) regarding the TestCoroutineDispatcher. The fact that `runBlockingTest` uses `async` to run the test body ([TestBuilders.runBlockingTest#L49](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-test/src/TestBuilders.kt#L49)), by the time it tries to throw an exception, the...
Proposed fix for #3395 - Capturing the stack frames for both the reader+writer or the writer+writer, depending upon the scenario. This results in a thrown exception which looks similar to...
## Current Behavior (1.6.3) The `TestMainDispatcher` is wrapped as a delegate within `NonConcurrentlyModifiable` which tests for concurrent writes while the dispatcher is being read or written. If concurrent writes are...
Consider the following situation when the dispatcher in the context is multithreaded ``` suspend fun foo() = yield() ``` It basically can be boiled down to the following pseudocode: ```...
* KT-50122
* For RxJava2, use them in internal implementations where appropriate * For RxJava3, introduce & Any bound to generic argument in our extensions to avoid errors in Kotlin 1.8.0 due...
In the code below, the TimeoutCancellationException thrown by `withTimeout` is propagated as expected when using `flatMapConcat`, but not propagated when using `flatMapLatest`. If `withTimeout` is replaced with `check(false)`, the exception...
Current semaphore implementation uses `Segment`-s for storing waiting continuations. Moreover, the upcoming new channels and mutex algorithms also use segments to store waiters. When suspending, a cancellation handler should be...