协程

发布时间:2019-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了协程脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

协程

1. 协程介绍

协程又称微线程,从名字可以看出,协程的粒度比线程更小,并且是用户管理和控制的,多个协程可以运行在一个线程上面。那么协程出现的背景又是什么呢,先来看一下目前线程中影响性能的特性:

  • 使用锁机制
  • 线程间的上下文切换
  • 线程运行和阻塞状态的切换

以上任意一点都是很消耗cpu性能的。相对来说协程是由程序自身控制,没有线程切换的开销,且不需要锁机制,因为在同一个线程中运行,不存在同时写变量冲突,在协程中操作共享资不加锁,只需要判断状态就行了,所以执行效率比线程高的多。

2. 主流语言对协程的支持

Lua语言

Lua从5.0版本开始使用协程,通过扩展库coroutine来实现。

Python语言

python可以通过 yield/send 的方式实现协程。在python 3.5以后,async/await 成为了更好的替代方案

Go语言

Go语言对协程的实现非常强大而简洁,可以轻松创建成百上千个协程并发执行。

Java语言

如上文所说,Java语言并没有对协程的原生支持,但是某些开源框架模拟出了协程的功能,有兴趣的小伙伴可以看一看Kilim框架的源码:

https://github.com/kilim/kilim

C/C++

c/c++需要自己借助ucontext、setjmp、longjmp库实现,微信开源了c/c++的协程库libco。

脚本宝典总结

以上是脚本宝典为你收集整理的协程全部内容,希望文章能够帮你解决协程所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。