协程:异步与并发
协程(coroutine)的概念已经广为人知,这里就不多说了。作为用户态主动调度的执行单位,协程可以避免传统多线程程序的上下文切换、调度和锁竞争等开销。
前一段时间一个小师弟过来面试,提到在阿里实习时,为了方便的编写高并发长连接程序,调研发现了了一个java的协程实现。我于是便问他结果如何,用这个真的能够达到你的目的吗?他就答不出来了,只是在机械的重复「协程相比回调更适合异步编程」之类的。
很多人都有这个误解,认为有了协程,就可以用同步程序的方式,写出异步的程序,原先同步的程序和第三方库,也会自动变成异步的。为什么说这是个误解呢,因为要写出有异步效果的程序,只有协程是不够的,还需要有底层IO的支持。在发生IO时,要将IO操作交给异步实现去执行,并让渡出协程的执行权,由调度去调度执行其他协程。…
近期评论