boost asio里面的协程问题?
这里只说asio的stackful routine,它是通过BOOST.COROUTINE里的非对称协程实现的。非对称协程很容易实现生产者/消费都模型,它可以简单理解成一个pull_type(消费者)+一个push_type(生产者),两者都可以通过调用自己的operator()来让出控制权,看起来很像是用goto语句在函数中间跳入跳出。但由于协程交出控制权时是保存了状态的,所以在重新拿到控制权后能够接着从让出位置处继续执行。明白非对称协程后就很容易理解ASIO了。ASIO里创建协程是通过spawn完成的:template\u0026lt; typename Function\u0026gt;void spawn( boost::asio::io_service \u0026amp; io_service, Function function, const boost::coroutines::attributes \u0026amp; attributes = boost::coroutines::attributes());这里相当于由io_service和function组成了一对非对称协程,io_service扮演pull_type,function扮演push_type。平时io_service处于io阻塞状态,有事件到达时将控制权交给function,function处理到需要下一个io事件时,又把控制权交还给io_service,以此循环直到function结束。现在来回答你的两个问题:交出控制权后切换到哪个协程了???可以理解成切换到io_service::run里面去了。切换过去干了啥??? 切换过去等待对应的io事件.
推荐阅读
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 这样的情况我该咋办
- 贵州对于大数据有哪些方面的地域优势为啥都是贵州呢
- 想要找图形图像方面的CTO合伙人,怎样寻找靠谱
- 提问知乎:容联云通讯是咋付费删负面的
- 网络存储,数通,安全,这三个方面的工程师主要都是干啥,在现今那个技术找工作容易些呢
- 请问这段代码是啥意思,从一个仿造网站上下载的软件里面的,对电脑有危害吗
- 关于环艺 建筑 展示这三方面的网站或书籍杂志推荐
- ucloud售前架构师怎样在销售团队里面的职责主要是啥
- 自己做邮件群发需要学习哪些电脑方面的知识
