![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础组件
文章平均质量分 71
小勺同学
这个作者很懒,什么都没留下…
展开
-
手写线程池关键API
queue->tail就相当于queue->tail->next,这里真的值得细品,建议结合内存模型细细分析,linux源码中对于队列也是这样的操作,同时将next指针设为void。get调用的是pop,当pop不出任务时,也就是队列中没有任务时,队列会将线程堵塞,直到有任务添加到队列中才会唤醒。向队列中加任务,这里可以着重注意队列结构体中的tail指针的处理,它是一个二级指针,而task中首地址是指向下一个任务的void*指针,*link就是next指针,分配任务资源,并将任务放入队列中。原创 2024-06-26 22:12:05 · 299 阅读 · 0 评论 -
手写内存泄漏组件
内存泄漏是指在程序运行过程中未释放已经分配的内存空间,导致这部分内存无法再被程序使用(也就是调用了malloc而没有使用free进行释放)。如果内存泄漏问题严重,会导致系统的可用内存逐渐减少,最终可能引发程序崩溃或者系统性能下降。原创 2024-06-04 09:22:49 · 334 阅读 · 0 评论 -
有锁队列VS无锁队列
标题:无锁队列 vs 有锁队列:性能与并发的对比介绍简要介绍无锁队列和有锁队列的概念和作用。引入话题,说明为什么无锁队列和有锁队列在并发编程中具有重要意义。无锁队列(Lock-Free Queue)介绍无锁队列的工作原理和特点。讨论无锁队列的优势,如高性能、低延迟和适用于高并发场景。举例说明无锁队列的应用场景,如高频率交易系统、实时数据处理等。有锁队列(Lock-Based Queue)介绍有锁队列的工作原理和特点。原创 2024-04-20 22:42:34 · 1572 阅读 · 0 评论 -
手写简单内存池(c和c++)
这是实现内存池功能的四个接口,分别是初始化内存池,销毁内存池,分配内存块,释放内存块。代码看着蛮清晰易懂的,唯一的难点可能是*(char**)这个指针的操作,以init函数中的为例:先是拿到指向空余内存块的指针,然后循环内存块,将ptr指针强转为二级指针再解引用,也就是每个内存块中的首部包含了一个char*,指向下一个节点,从而形成了一个链表。fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,纯c和cpp实现的简单内存池,均是申请固定大小的内存块。原创 2024-04-11 21:32:36 · 537 阅读 · 0 评论