![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组件设计系列
yishuihan222222
“知识是免费的,经验是宝贵的”,不做知识的搬运工,专注于经验总结。
个人邮箱:yishuihan2@aliyun.com
展开
-
组件设计系列:实现一个支持异步和延迟任务的线程
线程是一个很简单的,今天本文将实现一种支持异步任务添加和延迟任务的线程类,开启一个线程后,可以往里面持续添加异步任务,任务串行执行,且执行顺序与添加顺序一致。支持添加延时任务。任务可以是业务方的任意函数(通过bind/function实现)。当然了,稍加改造,还可以支持定时任务的实现。同时,以本线程的实现为基础,还可以实现后续的线程池。 0、前提 首先,我们将使用到的命名空间进行封装。 1、线程类task_thread 当前的线程类,当退出线程的时候,支持三种策略。其中,THREAD_RELEASE_.原创 2020-11-27 17:53:19 · 291 阅读 · 0 评论 -
组件设计系列:实现一个内存工具Buffer类
在Java里面或者Netty框架里面,都有自己封装好的ByteBuffer结构,用于将应用层数据转成字节数组,最终通过网络发送出去。熟悉Java的同学可能很熟悉这些API,本文的目的是参考Netty里面的ByteBuffer封装一个类似的结构,用于C/C++项目中内存的申请及维护。 0、结构定义 对于C/C++语言来说,都是指针,因此我们需要一个结构体保存这些信息,其中total_size代表目前Buffer的容量大小。 //数据缓冲区 struct buffer { char *data;原创 2020-11-14 19:18:00 · 229 阅读 · 0 评论 -
组件设计系列:实现一个LRU缓存类
组件设计系列:实现一个LRU缓存类1、简介2、实现LRU缓存3、测试 1、简介 在我负责的项目中,有很多公共的组件,实现的思路很值得我们学习。比如LRU缓存,这种策略在操作系统中也有应用。本次是基于C++实现的一个支持泛型的LRU缓存工具类,实现思路供大家参考。 LRU算法(Least Recently Used,最近最少使用),是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。 2、实现LRU缓存 首先看一下LRUCache类的定义如下: 思路主要是借助map和list来实现一个LRU缓存的实原创 2020-11-11 18:12:29 · 2818 阅读 · 13 评论