云服务器代理商-凯铧互联

现代编程语言中的协程是怎样的?

客户问题:
现代编程语言中的协程是怎样的?

凯铧互联技术回复:

协程
如上图,左边是VERT.X, Java里面最近比较流行的框架,想要制作的就是Java里的node.js的生态,我们可以看到官方所提供的连接数据库例子。 Client.getConnection,来获取数据库连接,但它不是说立马返回一个连接给到我们,而是提供callback,然后这个result里面表示执行是否成功,如果成功的话,我们可以通过result去拿到 connection。这就是通过义务编程的方式,去让我们在线程里面处理大的逻辑,NGINX就是这样的一种方式。这样代码其实看起来是非常难以维护的,比如在里面需要通过result set去把数据放到缓存里面,又是一个远程调用需要阻塞,可能又是一种callback,这个嵌套会非常深,非常难处理,由于我们都是callback,所以这个站就没法被维持,假如在这个地方有异常就非常难以处理。 现代编程语言是怎么解决这个问题,我们给的答案是协程。ES7、C# 他们都提供协程来帮助解决这类问题。我们以一段Kotlin代码为例,看协程怎么帮助代码改写成非常直观的代码,Kotlin里面通过suspend关键字来表示,函数是可以被挂起的,然后它也可以在 client上新加的方法,新的方法叫Agetconnection。里面调用Kotlin提供的非常 medical的方法,他会获取一个当前执行上下文的connection,让我们getConnection直接调用。getConnection的callback是恢复当前协程的执行,并且把拿到connection作为返回值。这样实际上不用一直占着 CPU资源,实际上调度器会继续去调度其他执行,一旦进行这类封装以后,我们看到代码可以被简化为下面这种形式。

Conn=clinet. AGetConnection();
然后 rs= Conn .aQurerythat(“SELECT * FROM …”)

这段代码相比左边这段代码那就是大大简化了,但我们要做对这种回调形式进行封装。

本文适用于
现代编程语言中的协程是怎样的?

 

阿里云代理商凯铧互联:享受购买价格更优惠!双11返场活动请戳 http://www.alibjyun.com/process.html 云产品通用代金券,限量抢!!

享受更多阿里云代理折扣或 领取更多阿里云优惠券联系我司客服QQ:3287819116; 3398234753;2550856134

阿里云业务网站:www.alibjyun.com

联系电话:158-0160-3153(微信同号)

赞(0) 打赏
未经允许不得转载:云服务器代理商-凯铧互联 » 现代编程语言中的协程是怎样的?

凯铧互联专注云计算

联系我们了解更多

觉得文章有用就打赏一下文章作者

微信扫一扫打赏