组件
文章平均质量分 82
基础组件、中间件、框架
曾格0
csdn YYDS
展开
-
死锁检测组件-设想
现在有三个临界资源和三把锁绑定了,三把锁又分别被三个线程占用。(不用关注临界资源,因为锁和临界资源是绑定的)但现在出现这种情况:线程1去申请获取锁2,线程2申请获取锁3,线程3申请获取锁1,这样就会造成死锁:死锁问题,可转换为有向图的环路检测。原创 2023-02-17 20:58:55 · 462 阅读 · 0 评论 -
定时器设计
时间有序性各种数据结构的时间复杂度:最小堆:插入O(logn),删除O(logn),过期expire执行O(1)红黑树:插入O(logn),删除O(logn),过期expire执行O(logn)哈希表+链表(时间轮):插入O(1),删除O(1),过期expire平均执行O(1)(最坏为O(n))不同开源框架定时器实现方式不一,如,libuv采用最小堆来实现,nginx采用红黑树实现,linux内核和skynet采用时间轮算法实现等等。原创 2023-02-17 20:16:53 · 639 阅读 · 0 评论 -
锁与原子操作
如果有两个线程对i=20进行自增:idx++正常是这样:从内存加载到寄存器 =》 寄存器自增 =》 从寄存器加载到内存但可能是:在线程1切换2时,没问题,在线程2切换线程1时,线程1栈中保存的寄存器的值INC是20,写入内存就是21,而不是22.如果开启O3优化,编译器会将自增转换为原子操作(后面再将)原创 2023-02-09 22:02:02 · 338 阅读 · 0 评论 -
连接池的设计实现
一个资源满足以下两个条件,就可以考虑使用池化技术如线程池、内存池、mysql与oracle连接池。原创 2023-02-05 20:46:49 · 514 阅读 · 0 评论 -
基于C讲解协程设计原理
通过C讲解协程原理原创 2023-01-31 21:30:44 · 297 阅读 · 0 评论 -
异步请求池的实现
【代码】异步请求池的实现。原创 2022-12-28 22:56:30 · 319 阅读 · 0 评论 -
线程池设计与实现C
创建/关闭线程池、添加任务、线程入口函数(获取并执行任务)原创 2022-12-25 19:15:30 · 226 阅读 · 0 评论 -
内存池设计基本思路
设计内存池,以减少因频繁调用malloc造成堆中造成的内存碎片。原创 2022-12-23 19:42:18 · 173 阅读 · 0 评论