协程(二) 云风coroutine源码分析

原创 2016年08月29日 17:54:19

   云风的coroutine实现了类似Lua的协程,其代码量简洁,非常适合用来入门协程。从中我们可以学习到协程相关的许多概念,例如控制权的传递、调度器的设计、协程栈的使用等。

   笔者fork了云风的coroutine,根据自己的理解为代码添加了详细的注释,源码分析请移步我的github

从云风的coroutine库学习协程

协程又被称为微线程,不过其实这样的称呼无形中为理解协程增加了一点阻碍。协程本质上是在一个线程里面,因此不管协程数量多少,它们都是串行运行的,也就是说不存在同一时刻,属于同一个线程的不同协程同时在运行。...
  • Swartz2015
  • Swartz2015
  • 2017年07月28日 18:45
  • 573

Linux下c实现协程-Coroutine

Widnows 是提供了用户级线程的,类似 coroutine 需要用户主动是切换。这在单线程程序中非常有用。线程调度模块只负责提供堆栈,环境的保存。不负责分配时间片等。 自己实现 coro...
  • blade2001
  • blade2001
  • 2011年10月25日 16:44
  • 6355

协程(三) 腾讯libco源码分析

腾讯的libco使用了hook技术,做到了在遇到阻塞IO时自动切换协程,(由事件循环co_eventloop检测的)阻塞IO完成时恢复协程,简化异步回调为相对同步方式的功能。其没有使用显示的调度器来管...
  • u010599509
  • u010599509
  • 2016年08月30日 15:47
  • 3291

从云风的coroutine库学习协程

协程又被称为微线程,不过其实这样的称呼无形中为理解协程增加了一点阻碍。协程本质上是在一个线程里面,因此不管协程数量多少,它们都是串行运行的,也就是说不存在同一时刻,属于同一个线程的不同协程同时在运行。...
  • Swartz2015
  • Swartz2015
  • 2017年07月28日 18:45
  • 573

腾讯协程库libco的原理分析

我们以example_echosvr.cpp为例子,这个例子的作用就是读取客户端的请求,然后按原样返回给客户端。在它的main函数里创建了proccnt进程,每个进程里有cnt个task。这里的pro...
  • dingyujie
  • dingyujie
  • 2015年09月23日 10:17
  • 11413

libco协程库上下文切换原理详解

念桥边红药,年年知为谁生 ​ —— 杨州慢 姜夔 缘起libco 协程库在单个线程中实现了多个协程的创建和切换。按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函...
  • lqt641
  • lqt641
  • 2017年06月15日 14:31
  • 1047

Python中协程(Coroutine)的使用和注意点

0. 协程的优势 在Lua中有协程,在Python里也有协程(Coroutine)。那为什么会需要协程,协程的好处有哪些? 1. 分片计算(sliced calculating) 我们可以把一个...
  • tab_space
  • tab_space
  • 2016年07月11日 22:36
  • 2174

C++协程库coroutine使用指南

https://github.com/tonbit/coroutine是一个精巧的C++非对称协程库。库只有一个.h文件(...
  • hellufo2
  • hellufo2
  • 2016年12月13日 14:38
  • 1187

协程--Coroutine小记

在unity中,协程是一个特殊的函数,它通过使用yield语句中断执行当前的代码,直到中断指令(YieldInstruction)结束后再接着之前的代码继续执行。 在C#中写协程需要遵循的规则有: ...
  • Willtom
  • Willtom
  • 2016年11月12日 10:08
  • 1953

在Java中使用协程(Coroutine)

各种语言在实现Coroutine方式的支持时,多数都采用了Actor Model来实现,Actor Model简单来说就是每个任务就是一个Actor,Actor之间通过消息传递的方式来进行交互,而不采...
  • kobejayandy
  • kobejayandy
  • 2013年09月21日 13:28
  • 17781
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:协程(二) 云风coroutine源码分析
举报原因:
原因补充:

(最多只允许输入30个字)