相当于Kotlin中C#的Semaphore/SemaphoreSlim?

Hel*_*rld 4 kotlin kotlinx.coroutines

Kotlin 中是否有与 C# 的 Semaphore/SemaphoreSlim 类型等效的类型?我想将它与协同例程(非阻塞)一起使用。即WaitOneAsync()。

Kir*_*man 6

kotlinx-coroutines现在已经有一个成熟的Semaphore班级了。

您可以按如下方式使用它:

import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.sync.Semaphore
import kotlinx.coroutines.sync.withPermit


suspend fun doConcurrently(list: List<Something>) {
    val semaphore = Semaphore(4) // number of permits is 4

    list
        .map { async { semaphore.withPermit { /* do something */ } } }
        .awaitAll()
}
Run Code Online (Sandbox Code Playgroud)