- 博客(7)
- 资源 (2)
- 收藏
- 关注
原创 apollo cyber中的协程源码解析
情况,如下图,A、B、C、D 任务在第一个 group 中执行,E在第二个 group 中执行,对于没有出现在配置中的任务,比如F默认会放到第一个 group 中执行(下文会提到哦)。而且配置中我们对于任务进行了优先级设置,A、B、C、D 的任务优先级依次增大,正好对应下图的拓扑依赖关系,在链路中越靠后的任务优先级越高。其实,数据也是这样在任务拓扑图中传递,数据走到最后,执行的任务优先级越高,这是为保证整个流程可以快速走完,不被其他流程的任务打断。根据上面的 conf 文档,可以简单画出任务的。
2024-06-17 14:26:19
624
1
原创 apollo cyber中task_manager源码分析
从上述TaskManager的构造函数可以看出在TaskManager初始化任务的时候会创建scheduler::Instance()->TaskPoolSize()个任务,用户异步协程的运行在用户调用cyber::Async的时候会更具是否处于正式环境调用Enqueue或者std::async函数。cyber::Async在一定意义上不具备真正的实时性,在默认情况下协程的优先级为最低,所以task中添加的任务会在系统空闲的时候在调用。
2024-06-17 14:23:05
257
原创 apollo cyber共享内存解析
这里可以看到TryFetch函数会一直调用buffer_的Fetch函数,buffer_是ChannelBuffer类型的成员变量从名字可以看出它是一个数据缓冲区。其中可以看到在不断的通过获取indicator_->next_seq获取消息的序列号,如果有消息到来则通过*info = indicator_->info[idx]获取下一条消息。看到这里可以看到,这里通过第二步中创建的transmitter_的Transmit发送了数据。在这里可以看到其中会先设置Msg_info中的序列号。
2024-06-17 13:53:32
925
原创 网络编程之Select
Select函数介绍```#include <sys/select.h>/* According to earlier standards */#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, str...
2021-01-19 10:26:34
179
原创 c++两数之和
题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2:输入:nums = [3,2,4], target = 6 输
2021-01-14 16:26:15
529
原创 Socket网络编程Linux下TCP Socket编程实例以及基础API
基础api介绍网络字节序转换unsigned long int htonl( unsigned long int hostlong);unsigned short int htons( unsigned short int hostlong);unsigned long int ntonl( unsigned long int hostlong);unsigned short int ntonl( unsigned short int hostlong);通用的Sokcet地址#
2021-01-14 16:11:48
186
原创 HTTP(超文本传输协议)报文格式
HTTP(超文本传输协议)报文格式HTTP请求报文http请求报文数据分为三部分:请求行 请求头部 请求数据http请求报文的格式如下图所示:下面是Get请求的例子:GET /92316461213.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.
2021-01-14 14:14:25
499
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人