是在多线程模型里混入协程。
线程池本来就有调度器,没事时都在调度器里待着。
混入协程,线程自己也有一个context。从调度器得到一个任务,就swapcontext,进行一次切换进入协程。运行到需要yield,就再一次切换,回到自己的context,继续在调度器里等待。每个协程的一次执行需要两次切换。
这个过程与任何业务逻辑无关,业务人员不需要了解这些。
前边等银行回应的例子,还有等身份证回应的,等其他任何外部事务回应的,都让他们自己写异步等待,几乎是不可能的事。所有这些,使用RecvNet()就好了。
并行处理会有一个管理器,把业务分解成多个独立部分,这些独立的数据发送给调度器,每一个批次分配给一个线程。通过socket,调度器就是epoll。
【 在 VincentGe 的大作中提到: 】
: 这个复杂性在我看来更多是使用者带来的。
: 你难道要在一个协程中使用多线程模型吗?
:
: ...................
--
修改:ylh1969 FROM 221.218.60.*
FROM 221.218.60.*