go语言学习笔记 — 并发编程 — 轻量级线程goroutine(4):go语言的协程goroutine,与普通程序的协程coroutine

拿Python程序的coroutine与Go程序的goroutine做比较,两者都可以把函数或语句运行在独立的环境,但还是有不同点:

  • goroutine可能并行执行,但coroutine始终顺序执行

狭义地说,goroutine可能发生在多线程环境下。goroutine无法控制自己获得高优先级支持;coroutine始终发生在单线程,coroutine程序需要主动交出CPU控制权,宿主操作系统才能获得控制权并重新分配给其他coroutine。

  • goroutine之间使用通道channel通信,coroutine使用yield和resume操作

coroutine的运行机制属于协作式任务处理。早期操作系统要求每个应用程序必须遵循操作系统的任务处理规则:应用程序在不需要使用CPU时,需要主动交出CPU控制权。如果开发者无意或故意使应用程序长时间占用CPU,操作系统也无能为力,最后OS很容易失去响应或死机。

goroutine的运行机制属于抢占式任务处理。这与多进程和多线程任务处理非常类似,操作系统如果发现一个应用程序长时间大量占用CPU,那么用户有权终止这个任务。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值