Kotlin select 多路复用 by Channel

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin select 多路复用 by Channel相关的知识,希望对你有一定的参考价值。

    @Test
    fun `test select channel`() = runBlocking<Unit> 
        val channels = listOf(Channel<Int>(), Channel<Int>())
        GlobalScope.launch 
            delay(100)
            channels[0].send(200)
        
        GlobalScope.launch 
            delay(50)
            channels[1].send(100)
        
        val result = select<Int?> 
            channels.forEach  channel ->
                channel.onReceive  it 
            
        
        println(result)
    

如果修改下时间

 则结果打印200

 

 

以上是关于Kotlin select 多路复用 by Channel的主要内容,如果未能解决你的问题,请参考以下文章

Go语言协程并发---select多路复用应用

Kotlin 协程协程中的多路复用技术 ① ( 多路复用技术 | await 协程多路复用 | Channel 通道多路复用 )

Kotlin Flow实现多路复用

python协程和异步IO——IO多路复用

IO多路复用的三种机制Select,Poll,Epoll

python-IO多路复用,select模块