自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 tokio::sync详解

本文主要介绍tokio的sync模块,内容来自官方文档,tokio版本v1.38.1。

2024-07-22 17:52:21 702

原创 tokio::task详解

任务的取消,提供了两个JoinHandle::abort,AbortHandle::abort方法可以取消任务,当其中一个方法执行时,任务会收到信号,在.await产生结果时关闭,当任务空闲,会立即关闭不再运行,关闭tokio运行时,会取消上面的所有任务。使用多线程runtime,block_in_place能够使用,它也生成一个阻塞任务,和 task::spawn_blocking不同的点在于,在异步的上下文中,它会把当前的工作线程转化为阻塞线程并把这个工作线程上等待执行的其他任务给移动到其他工作线程。

2024-07-22 15:26:54 956

原创 tokio::runtime详解

当运行中的任务结束之后会立即执行Lifo槽中的任务,如果调度的任务连续来自槽中,tokio会临时禁止调度槽中任务,直到有一个调度的任务不是来自槽中,由于槽中数据和本地线程是分离的,其他线程无法获取本线程槽中的任务。维护了两个队列,一个全局的,一个本地的,调度的时候优先从本地队列中获取任务,当本地任务是空的,或者从本地连续获取了31次任务进行调度,那么就会从全局队列获取,31可配置。如果全局队列和本地队列都是空的,就会从其他工作线程的本地队列获取,每次获取对方的一半数量的任务,异步应用程序需要的运行时支持。

2024-07-16 18:44:18 645 1

原创 linux下实现hook函数

linux下实现hook功能

2024-04-03 16:24:10 303 1

原创 zookeeper的负载均衡客户端实现

可以明显看到实现的链接的时候只建立了一个,根据下标connect_index来获取地址,当发生错误时,此时会修改connect_index,再次调用连接函数会去连接其他zookeeper服务器。针对这个问题,zookeeper实现方式是在获取地址之后对zookeeper的地址进行了随机化的打散,不再是按照顺序了,以此来保证各个客户端获取的是随机的顺序,那么根据下标访问就获得了不同的。阅读zookeeper的c语言的客户端实现,记录部分实现方式。当获取地址之后默认打散addrs顺序。

2024-02-01 16:40:14 414 1

原创 zookeeper的 zookeeper_init函数保持两个线程同一时刻运行的方式

通过初始化的时候threadsToWait设置为2,然后采用对条件变量广播的方式,所有保证其他阻塞在pthread_cond_wait的线程同时向下执行。像个函数都调用了notify_thread_ready,notify_thread_ready的实现如下。zookeeper_init 接口开启了两个线程,并且保持了两个线程相互等待执行。通过条件变量广播和锁的方式实现了多个线程瞬时同时执行某个任务。开启了线程do_io 和do_completion。其中do_io开始实现如下。

2024-02-01 15:53:33 502 1

原创 tcmalloc分析内存泄漏

调试

2023-12-04 15:42:09 568

原创 redis-plus-plus源码分析

redis++客户端源码解释参考

2023-08-02 17:20:17 816 1

原创 rust环境安装和编译

rust介绍

2023-05-20 21:39:13 370 1

原创 cppcheck使用

cppcheck使用

2023-04-13 15:31:39 908

原创 gitlab使用---个人环境测试

git merge remotes/origin/minic-common 合并远程分支minic-common到本分支。开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支。git push origin gyh-minic(远程分支分支名字)当master代码改动了,需要更新开发分支(dev)上的代码。ssh-keygen -t rsa -C ‘上面的邮箱’git branch -a 查看所有的分支。git pull (拉去代码)git branch 查看本地分支。

2023-04-12 14:58:36 241

原创 linux系统开启core文件生成,设置core文件生成路径

core文件调试

2022-11-25 16:32:03 2581

原创 gcc汇编释义(1)

gcc编译的汇编代码,解释部分编译器操作

2022-11-03 16:45:54 576

原创 nginx内存池

nginx源码分析

2022-06-15 15:00:45 243 1

原创 nginx自定义的数据结构_数组

nginx的数组nginx数组的实现在ngx_array.h 和 ngx_array.c文件中nginx数组定义typedef uintptr_t ngx_uint_t;typedef struct { void *elts; //数组的起始地址 ngx_uint_t nelts; // 个数 size_t size; //每个元素的大小 ngx_uint_t nalloc; // 容量 ngx_pool_t

2021-06-15 14:40:46 283

原创 C语言类型的分析

C语言类型的分析分析方式A 声明从他的名字开始读取,然后按照优先级顺序依次读取B 优先级从高到低依次是:1 声明中被括号括起来的那部分2 后缀操作符 括号()表示这是一个函数 而 []表示这是一个数组3 前缀操作符 * 表示指向...的指针C 如果const或volatile 关键字后面紧跟类型说明符(如int,long等),那么它作用于类型说明符。其他情况下const或volatile关键字作用于它左边紧邻的指针星号D 用优先级规则翻译如下类型char * const *(

2021-02-03 22:28:58 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除