概述
背景:
最新版的asio(1-13-0)的api添加了对co_await的支持 (之前的版本也支持一些,只不过命名空间还没有正式放入asio)。
我打算学习下asio,也打算抛弃自己的网络库了,也期望其他的库或者driver能够统一的使用asio+co_await,这样我们应用程序开发者就能快速的引入库(少一些心智负担,不用担心线程/同步/异步/生命周期管理等各种模型差异性导致的顾虑)。[当然我也并不是说asio就是最好的选择,但是大家都基于某个统一的库去做开发,还是有很多好处的]。
目的:
我的目的是采用 asio+await开发一个同步非阻塞RPC(嗯,就是类似golang grpc),来替换调我的异步RPC,进而通过它再重新开发Orleans-CPP简易版本。
通过我个人理解,要实现同步RPC(当然也包括其他基于协程的应用)我们需要先实现几个基础功能):
- Channel - 用于实现协程之间的pipeline
- Mutex - 基于协程的锁
- WaitGroup - 基于协程的等待对象
- CondVariables
- ……(带补充)
因为同步RPC库(支持多个协程使用同一个RPC对象去调用服务)的实现(个人理解,我本打看看grpc怎么做的,但时间还不够,所以~~~)大概如下:
开启一个writer协程,使用channel收集其他协程(调用RPC函数时)产生的消息(消息里包括一个request msg、一个用于接收此次
最后
以上就是沉默萝莉为你收集整理的asio boost 异步错误处理_C++20 await & asio 相关的学习的全部内容,希望文章能够帮你解决asio boost 异步错误处理_C++20 await & asio 相关的学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复