同步异步与协程线程进程关系
同步异步与协程线程进程关系.
参考:链接
主要看那个老张烧开水:
异步执行:老张(调用者),烧开水.是一个调用者-->烧开水.然后烧开水-->(反馈)调用者,调用者-->上水(剩余,直接先写)的过程.
有了协程,是不是可以不要异步了?应该就是!搞一堆协程池,都是干活的.这个事情完了,或者慢得很,就不管了,干其他事情,当反馈后,直接另外一个协程去干活.
应该就是这样.所谓的异步,不过是一件事情分拆成几个动作. 只不过编程的时候都写在一起,执行的时候分开执行而已.
再仔细思考:异步,为什么异步?就是干某件事的时间长,如果瞎等,实在是瞎.所以就必须另起个工作者来专门作这件事.然后你就可以做其他事情了.而不是瞎等.
因而,只要耗时长的事情,都可以异步走起.另开一个工作者.主要其实就是协程.所以,我一直看协程,协程.看了过后,感觉没异步什么事了呢?原来异步就是靠协程或线程来实现.但线程成本太高,因而就用协程了.
当然,做一件事,可能有几件事情都非常消耗时间,这时,用同步手法写异步或者写协程就是非常爽的了.
参考这篇文章,非常好的文章.
其实就是把原来的一根死线程拆解成一堆活协程.这样,你这边慢,我就保存环境,然后干其他事.等你完成后,把要办的活干了.
协程还可以返回值.
Task Add100ByCoroutine(int init, call_back f)
{
int ret = co_await Add100AWaitable(init);
ret = co_await Add100AWaitable(ret);
ret = co_await Add100AWaitable(ret);
f(ret);//流程化执行.它这里怪,都是相同函数
}
当然,大量计算耗时的任务,还是得交给线程去完成.
浙公网安备 33010602011771号