minivac
02/26/2019, 10:37 AMgildor
02/26/2019, 10:38 AMgildor
02/26/2019, 10:39 AMminivac
02/26/2019, 10:41 AMgildor
02/26/2019, 10:41 AMminivac
02/26/2019, 10:42 AMgildor
02/26/2019, 10:42 AMminivac
02/26/2019, 10:43 AMgildor
02/26/2019, 10:44 AMminivac
02/26/2019, 10:44 AMminivac
02/26/2019, 10:44 AMminivac
02/26/2019, 10:44 AMminivac
02/26/2019, 10:45 AMgildor
02/26/2019, 10:47 AMminivac
02/26/2019, 10:47 AMminivac
02/26/2019, 10:47 AMminivac
02/26/2019, 10:47 AMminivac
02/26/2019, 10:47 AMclass SuspendSemaphore(permits: Int = 0,
capacity: Int = Channel.UNLIMITED) {
private val channel = Channel<Unit>(capacity)
init {
repeat(permits) {
channel.offer(Unit)
}
}
suspend fun acquire() {
channel.receive()
}
fun release() {
channel.offer(Unit)
}
}
minivac
02/26/2019, 10:48 AMcbruegg
02/26/2019, 1:41 PMJonathan
02/26/2019, 3:34 PMIt might be nice to have this in kotlinx.coroutines.As @gildor said, it is not needed with coroutines. (more explanation by @elizarov in https://github.com/Kotlin/kotlinx.coroutines/issues/59).
Jonathan
02/26/2019, 4:06 PM