我是靠谱客的博主 沉默萝莉,最近开发中收集的这篇文章主要介绍asio boost 异步错误处理_C++20 await & asio 相关的学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景:

最新版的asio(1-13-0)的api添加了对co_await的支持 (之前的版本也支持一些,只不过命名空间还没有正式放入asio)。

我打算学习下asio,也打算抛弃自己的网络库了,也期望其他的库或者driver能够统一的使用asio+co_await,这样我们应用程序开发者就能快速的引入库(少一些心智负担,不用担心线程/同步/异步/生命周期管理等各种模型差异性导致的顾虑)。[当然我也并不是说asio就是最好的选择,但是大家都基于某个统一的库去做开发,还是有很多好处的]。

目的:

我的目的是采用 asio+await开发一个同步非阻塞RPC(嗯,就是类似golang grpc),来替换调我的异步RPC,进而通过它再重新开发Orleans-CPP简易版本。

通过我个人理解,要实现同步RPC(当然也包括其他基于协程的应用)我们需要先实现几个基础功能):

  1. Channel - 用于实现协程之间的pipeline
  2. Mutex - 基于协程的锁
  3. WaitGroup - 基于协程的等待对象
  4. CondVariables
  5. ……(带补充)

因为同步RPC库(支持多个协程使用同一个RPC对象去调用服务)的实现(个人理解,我本打看看grpc怎么做的,但时间还不够,所以~~~)大概如下:

开启一个writer协程,使用channel收集其他协程(调用RPC函数时)产生的消息(消息里包括一个request msg、一个用于接收此次

最后

以上就是沉默萝莉为你收集整理的asio boost 异步错误处理_C++20 await & asio 相关的学习的全部内容,希望文章能够帮你解决asio boost 异步错误处理_C++20 await & asio 相关的学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部