协程

线程是为了解决阻塞和并发的并发问题(在一段时间内执行更多的程序),类似的,协程也是为了在一段时间运行更多的“程序”(应该说是函数)并且避免线程阻塞。

线程和协程解决的并发问题不是一个问题,线程是为了让操作系统并发运行程序,以达到“同时”运行更多程序的目的,而协程是为了让一个线程内的程序并发服务更多内容,一个直观的例子就是一个单线程的服务器程序同时服务多个用户,如何做到服务更多用户?想想线程是怎么来的,我们只需要把这个线程中的程序继续细分,然后像时间片轮转一样不断的去执行这些细分的“子程序”。即使一个这样的“子程序”执行发生阻塞,也不会导致整个线程阻塞,在这个“子程序”阻塞的时候切换到其他“子程序”继续服务,既解决了阻塞的问题,也实现了并发。协程就是线程中可以交替运行的代码片段。

下面说说真实的协程,线程切换是由操作系统的时间片控制的,而协程是程序自己实现的,让协程不断轮流执行才是实现并发,所以实现协程还必须要有一个类似于时间片的结构,不同于线程的切换,协程的切换不是按照时间来算的,而是按照代码既定分配,就是说代码运行到这一行才启动协程,协程是可以由我们程序员自己操控的。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值