嗯。我比较想讨论的是,你这个 "task" 概念不够清晰明了,还是 "coroutine" 这个词比较适合描述你的想法。
而用户线程,最好用巨硬以前发明的纤程 (fiber) 来指代。这样子:
coroutine <-impl-> process
thread
fiber
协程可以使用三种方式来实现。不论是 c# 还是 c++ 标准库都认为 coroutine != fiber.
thread+fiber 的混合实现经常被称为 green thread.
然后呢,fiber 的实现方式有两种 stackful 和 stackless.
你做的协程框架其实是 stackful green thread. java/go 的实现则是 stackless green thread.
coroutine 的应用方式也有多种,协程池、generator 和 io 事件循环都是协程的应用场景。
事件循环还有多种实现方式。。
【 在 ylh1969 的大作中提到: 】
: 另外,纵观我的发言,都是站在框架的角度,不涉及任何具体应用,所有应用都抽像成task。只讨论task的调度问题,进程,线程,协程都是调度工具。讨论什么调度方法能够充分利用系统资源。
: 至于框架与应用的结合,见本版,服务器动态模块热插拔管理,把应用写成动态模块,
https://www.newsmth.net/nForum/#!article/CPlusPlus/431596: 加入指定目录,写个客户端,指名调用就可以了。至于执行器,是进程,线程,协程,基本不需要关心。
: ...................
--
修改:hgoldfish FROM 47.243.39.*
FROM 47.243.39.*