![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
虹少侠
唯有知识不会辜负你
展开
-
LruCache结合Any容器类型实现任意类型缓存
使用unordered_map 和 双向链表实现,支持设置缓存过期时间;通过Any容器可实现任意类型的缓存原创 2023-02-13 21:58:30 · 127 阅读 · 0 评论 -
分级时间轮c++简单实现
在实际工作中我们不能为每一个定时任务创建一个定时器,因为定时器也是一种珍贵的资源,在linux中可以使用alarm信号,timerfd,epoll_wait,select都可以来实现定时器。其中epoll_wait和select提供了延时作用,alarm采用异步的信号,timerfd系列需要在select/epoll中注册定时器事件EPOLLIN,并在事件发生后uint64_t x; read(timerfd,&x,sizeof(x));否则select和epoll的水平触发模式下会不断的提醒...原创 2020-08-16 22:13:46 · 928 阅读 · 0 评论 -
C++ 利用linux函数makecontext等实现简单协程
我是一个编程新手,最近了解到协程这个概念,协程可以理解为用户级线程,在用户空间实现调度,在处理异步IO时,可以在子程序中让出cpu交给其他协程,等事件完成再切换到子程序中。当然回调也可以实现,但是使用协程会使程序“看起来”是顺序执行的。我利用linux系统函数getcontext,makecontext,swapcontext来实现协程之间的切换。getcontext(ucontext_t*)初始化上下文,makecontext(ucontext_t*,void(*)(void),int args)原创 2020-06-13 20:18:31 · 1683 阅读 · 2 评论 -
智能指针shared_ptr
说明:在使用c++语言编程时、为了防止忘记对申请的空间进行释放、我们通常使用智能指针来管理对象。智能指针有很多种、它们适用于不同的场合。auto_ptr:只允许唯一的一个auto_ptr对象管理一个资源、在拷贝时会自动将原auto_ptr指向置空。unique_ptr:同一时刻只允许一个unique_ptr对象指向指定资源、不允许拷贝、通过release()释放所有权、move移动所有...原创 2019-01-23 19:17:33 · 163 阅读 · 0 评论 -
任意类型容器Any
利用模板类继承非模板类,实现一个可以存储任意类型的容器#ifndef _ANY_H#define _ANY_H#include <string>#include <algorithm>class IAnyItem abstract{public: virtual ~IAnyItem() {} virtual const type_info& ...原创 2019-08-13 20:08:50 · 605 阅读 · 1 评论