协程的优点:
跨平台
跨体系架构
无需线程上下文切换的开销
无需原子操作锁定及同步的开销
可以按串行模型去组织原本分散在不同上下文中的代码逻辑,避免状态同步问题。
相对于串行计算,并行计算可以划分成时间并行和空间并行。时间并行即流水线技术,空间并行使用多个处理器执行并发计算,当前研究的主要是空间的并行问题。以程序和算法设计人员的角度看,并行计算又可分为数据并行和任务并行。数据并行把大的任务化解成若干个相同的子任务,处理起来比任务并行简单。
协程通常是纯软件实现的多任务,与CPU和操作系统通常没有关系,所以没有理论上限。
缺点:它不能同时将 CPU 的多个核用上。
但对 lua 来说这通常不是问题,因为一个宿主程序里面是可以允许有多个 lua 状态机的,开多个线程或进程,然后每个核开一个 lua 状态机即可。
参考:
1.
http://patchwork.ozlabs.org/patch/95450/