From 57d0cd2e654dfe0c3f80d507cd19820cec76cc1d Mon Sep 17 00:00:00 2001 From: Vsevolod Tolstopyatov Date: Mon, 27 May 2024 14:20:57 +0200 Subject: [PATCH] Promote CoroutineDispatcher.limitedParallelism to stable Fixes #3864 --- kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt | 1 - kotlinx-coroutines-core/common/src/Unconfined.kt | 1 - .../common/src/internal/LimitedDispatcher.kt | 1 - kotlinx-coroutines-core/jvm/src/scheduling/Dispatcher.kt | 3 --- kotlinx-coroutines-core/native/src/Dispatchers.kt | 1 - kotlinx-coroutines-core/native/src/MultithreadedDispatchers.kt | 1 - 6 files changed, 8 deletions(-) diff --git a/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt b/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt index 8ab83ed3a8..8a114f6ab7 100644 --- a/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt +++ b/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt @@ -140,7 +140,6 @@ public abstract class CoroutineDispatcher : * @throws IllegalArgumentException if the given [parallelism] is non-positive * @throws UnsupportedOperationException if the current dispatcher does not support limited parallelism views */ - @ExperimentalCoroutinesApi public open fun limitedParallelism(parallelism: Int, name: String? = null): CoroutineDispatcher { parallelism.checkParallelism() return LimitedDispatcher(this, parallelism, name) diff --git a/kotlinx-coroutines-core/common/src/Unconfined.kt b/kotlinx-coroutines-core/common/src/Unconfined.kt index ffc89e622f..2e16f951b8 100644 --- a/kotlinx-coroutines-core/common/src/Unconfined.kt +++ b/kotlinx-coroutines-core/common/src/Unconfined.kt @@ -8,7 +8,6 @@ import kotlin.jvm.* */ internal object Unconfined : CoroutineDispatcher() { - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { throw UnsupportedOperationException("limitedParallelism is not supported for Dispatchers.Unconfined") } diff --git a/kotlinx-coroutines-core/common/src/internal/LimitedDispatcher.kt b/kotlinx-coroutines-core/common/src/internal/LimitedDispatcher.kt index fb615649c9..eb5196144f 100644 --- a/kotlinx-coroutines-core/common/src/internal/LimitedDispatcher.kt +++ b/kotlinx-coroutines-core/common/src/internal/LimitedDispatcher.kt @@ -34,7 +34,6 @@ internal class LimitedDispatcher( // A separate object that we can synchronize on for K/N private val workerAllocationLock = SynchronizedObject() - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { parallelism.checkParallelism() if (parallelism >= this.parallelism) return namedOrThis(name) diff --git a/kotlinx-coroutines-core/jvm/src/scheduling/Dispatcher.kt b/kotlinx-coroutines-core/jvm/src/scheduling/Dispatcher.kt index 1dab5268c7..350e3e9aee 100644 --- a/kotlinx-coroutines-core/jvm/src/scheduling/Dispatcher.kt +++ b/kotlinx-coroutines-core/jvm/src/scheduling/Dispatcher.kt @@ -11,7 +11,6 @@ internal object DefaultScheduler : SchedulerCoroutineDispatcher( IDLE_WORKER_KEEP_ALIVE_NS, DEFAULT_SCHEDULER_NAME ) { - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { parallelism.checkParallelism() if (parallelism >= CORE_POOL_SIZE) { @@ -45,7 +44,6 @@ private object UnlimitedIoScheduler : CoroutineDispatcher() { DefaultScheduler.dispatchWithContext(block, BlockingContext, false) } - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { parallelism.checkParallelism() if (parallelism >= MAX_POOL_SIZE) { @@ -75,7 +73,6 @@ internal object DefaultIoScheduler : ExecutorCoroutineDispatcher(), Executor { override fun execute(command: java.lang.Runnable) = dispatch(EmptyCoroutineContext, command) - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { // See documentation to Dispatchers.IO for the rationale return UnlimitedIoScheduler.limitedParallelism(parallelism, name) diff --git a/kotlinx-coroutines-core/native/src/Dispatchers.kt b/kotlinx-coroutines-core/native/src/Dispatchers.kt index 119b4fd323..e66c05f61d 100644 --- a/kotlinx-coroutines-core/native/src/Dispatchers.kt +++ b/kotlinx-coroutines-core/native/src/Dispatchers.kt @@ -27,7 +27,6 @@ internal object DefaultIoScheduler : CoroutineDispatcher() { private val unlimitedPool = newFixedThreadPoolContext(2048, "Dispatchers.IO") private val io = unlimitedPool.limitedParallelism(64) // Default JVM size - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { // See documentation to Dispatchers.IO for the rationale return unlimitedPool.limitedParallelism(parallelism, name) diff --git a/kotlinx-coroutines-core/native/src/MultithreadedDispatchers.kt b/kotlinx-coroutines-core/native/src/MultithreadedDispatchers.kt index cd4050156d..7968ffdcef 100644 --- a/kotlinx-coroutines-core/native/src/MultithreadedDispatchers.kt +++ b/kotlinx-coroutines-core/native/src/MultithreadedDispatchers.kt @@ -140,7 +140,6 @@ private class MultiWorkerDispatcher( } } - @ExperimentalCoroutinesApi override fun limitedParallelism(parallelism: Int, name: String?): CoroutineDispatcher { parallelism.checkParallelism() if (parallelism >= workersCount) {