logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++编译知识笔记(三)——静态链接

目录一、空间与地址的分配1.1 相似段合并并确定装载地址1.2 确定符号地址二、符号解析与重定位2.1符号解析2.2重定位三、总结编译过后我们会得到.o格式的目标文件,每个c或者cpp文件都会生成一个.o,也就是一个编译单元对应一个.o,而要生成一个可执行程序,则需要各个编译单元之间协调配合,各个编译单元之间存在着各种调用关系,比如跨编译单元访问变量或者调用函数,简单来说将各个.o的内容组织成一个

#c++#c语言#开发语言 +1
brpc源码解析(二)—— brpc收到请求的处理过程

作为rpc服务器,在启动过后,最主要的一个过程就是收到请求后的处理,而这就牵涉到一个网络编程相关最基本的部分:如何有效地处理socket传过来地数据。最典型的实现就是区分I/O线程和工作线程,一个或多个I/O线程负责从socket读取数据放入一个队列,然后一堆worker线程来从队列里取数据并处理,或者I/O线程读完数据直接交给worker,此类严格区分I/O线程和worker线程的机制会有几种典

#rpc
brpc源码解析(一)—— rpc服务添加以及服务器启动主要过程

目录1.往server里添加Service(业务代码)2.设置服务器参数3.启动服务器平时的工作用到了baidu-rpc搭建rpc服务,作为戈君大神的大作,在没有开源的时候,这个c++ 的rpc框架在厂内就已经好评颇多,无论是性能、文档、还是代码注释都很优秀,内部使用范围特别广,17年开源,开源版本叫做brpc,开源后不少大厂都有使用,目前已经进入Apache孵化器,源码以及文档的地址如下:ht.

#rpc
brpc源码解析(十一)—— 核心组件bvar详解(2)Reducer类和Adder类解析

目录1. Reducer类2. Adder类3. 总结上一篇文章聊了下bvar的整体组织架构,本篇将从最基本的计数器Adder的使用出发,分析Reducer和Adder的源码来阐述下最基本也是最重要的bvar工作机制,后续再进一步深入分析相关基础组件和其他类型的bvar,我觉得这也是一个比较有效地阅读分析这种基础类库源码的方式。整个brpc源码解析系列其实也是这么一个组织结构,先从使用的部分切入.

#c++#rpc
brpc源码解析(九)—— 基础类WorkStealingQueue详解

目录1. 基本介绍2. 类变量和初始化3. push函数4. pop函数5. steal函数6. atomic_thread_fence(butil::memory_order_seq_cst)的必要性7. volatile_size函数前面介绍过,work stealing queue是bthread种的重要机制,worker给自己的队列里添加任务,消化任务,也如果空闲下来了就会去其他work.

#c++#后端#rpc
brpc源码解析(七)—— worker基于ParkingLot的bthread调度

前面已经介绍过了bthread的主要机制,但对于具体的调度细节没有过多涉及,本篇将在着重介绍下bhtread在各个worker(taskgroup)之间的调度方式。在brpc里,有个和调度相关的重要类ParkingLot,parking lot 本质上就是基于futex的wait/signal,以前没太多接触过futex,刚好趁着阅读brpc的源码熟悉下futex的机制。Futex是linux一.

#c++#rpc
brpc源码解析(四)—— Bthread机制

Bthread是brpc用到的一个线程库,也是brpc的核心之一,默认情况下,包括用户代码在内的绝大部分代码都是运行在bthread里的,bthread也是brpc实现高性能的基石。bhtread官方文档定义如下:bthread是baidu-rpc使用的M:N线程库,目的是在提高程序的并发度的同时,降低编码难度,并在核数日益增多的CPU上提供更好的scalability, cache loca..

#c++#rpc#后端
到底了