池式结构
文章平均质量分 79
birate_小小人生
专注,自信,坚持
展开
-
池式结构--内存池
文章目录内存管理伙伴算法slab算法内存池的实现1. 分配2. 释放3. 扩容内存管理我们经常在堆上进行内存的分配和释放时,就会产生内存碎片问题。内部碎片的产生:因为所有的内存分配必须起始于可被 4、8 或 16 整除(视 处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个 43 字节的内存块时,因为没有适合大小的内存,所以它可能会获得 44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎原创 2021-08-08 23:42:18 · 324 阅读 · 0 评论 -
池式结构-线程池
文章目录任务队列执行队列管理组件创建线程池线程运行任务回调函数在多线程的操作中,我们经常使用线程池来进行大量的计算、缓存磁盘、写log等。线程池主要由任务队列、执行队列和管理组件。三部分组成。如图,中间的框框就是我们的线程池,threadqueue负责从taskqueue取任务,当没有任务时,thread通过条件变量进行等待。处理完成之后,返回处理的结果。任务队列typedef struct job { void (*func)(struct job *arg); void *us原创 2021-07-04 21:58:36 · 243 阅读 · 0 评论 -
池式结构--异步池
异步和同步的区别就是可以不需要一直等待IO,有结果就返回数据。异步池主要关注以下几点:具有多个连接使用网络io的基础,发送对应的协议多个连接,发送完请求之后,fd使用epoll去管理。请求与相应的线程,不能放到一个线程去处理。异步池可以分以下思路进行处理:1. commit: 请求* 建立网络连接* 组织好对应的协议,如dns* 发送到对应的服务器* fd是否可读,fd加入epollint dns_async_client_commit(struct async_context原创 2021-04-05 16:55:40 · 180 阅读 · 0 评论