
C++
大山峰石
这个作者很懒,什么都没留下…
展开
-
基于libevent 的定时器
#include "event.h"#include <sys/time.h>class EventWatcher {public: typedef std::function<void()> Handler; EventWatcher(struct event_base *event_base, const Handler& handler); virtual ~EventWatcher(); bool Init(); boo原创 2021-10-20 16:32:32 · 207 阅读 · 0 评论 -
互斥元与条件变量
互斥元:C++提供了std::mutex;调用lock()来锁定;调用unlock()解锁。作为替代,提供了身体都std::lock_guard类模板,实现互斥元的RAII管用语法,在构造时锁定互斥元,在析构时将互斥元解锁。std::unique_lock比std::lock_guard提供了更多的灵活性。数据竞争:C++标准库提供了std::once_flag 和std::call_once来处理这种情况~!std::shared_ptr <some_resour...原创 2021-07-19 11:33:08 · 110 阅读 · 0 评论 -
手写hash数据结构
用C语言手写hash数据结构和接口; 提供添加、删除、查询等功能。/* 采用链表方式解决冲突问题。*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define MaxSize 65535//hash 节点typedef struct dnode{ char *key; char *value; struct dnode * next;} DNode;//hash表原创 2021-07-15 20:37:23 · 150 阅读 · 0 评论 -
线程局部存储(TLS)
线程局部存储(STL,thread local storage): 拥有线程生命期及线程可见性的变量。线程局部存储实际上是由单线程程序中的全局/静态变量被应用到多线程程序中被线程共享而来。C++11 对TLS标准,声明一个TLS变量的语法通过thread_local 修饰符声明即可:int thread_local arg;一旦声明一个变量为thread_local, 其值将在线程开始时被初始化,而在线程结束时,该值也将不再有效。...原创 2021-07-05 17:32:09 · 166 阅读 · 0 评论 -
POD 类型
#POD 类型POD: Plain Old Datade 缩写。C++11将POD划分为两个基本概念,即:平凡的 和标准布局的。一个平凡的类或者结构体应该符合:1、拥有平凡的默认构造函数和析构函数。2、拥有平凡的拷贝构造函数和移动构造函数。3、拥有平凡的拷贝赋值运算符和移动复制运算符。4、不能包含与函数以及虚基类。标准布局的类或结构体应该符合:1、所有非静态成员有相同的访问权限。2、在类或者结构体继承时,满足一下两种情况之一:a、派生类中有非静态成员,且只有一个包含静态成员的基类。b、基原创 2021-07-05 17:03:31 · 211 阅读 · 0 评论 -
智能指针以及代码实现
C++ 11 标准中改用unique_ptr、shared_ptr、weak_ptr等智能指针来自动回收堆分配的对象。unique_ptr与所指对象的内存绑定紧密,不能与其他unique_ptr类型的指针对象共享所指对象的内存。unique_ptr则是一个删除了拷贝构造函数、保留了移动构造函数的指针分装类型。shared_ptr允许多个该智能指针共享同一堆分配对象的内存。weak_ptr可以指向shared_ptr指针指向的对象内存,却并不拥有该内存。普通智能指针:template &原创 2021-06-16 16:58:25 · 240 阅读 · 0 评论 -
LRU
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。#include <unordered_map>#inlcude <list>#include <algorithm>#include <iostream>原创 2021-06-10 14:39:53 · 87 阅读 · 0 评论 -
内存模型和原子类型操作
1、内存顺序a、memory_order_relaxed;b、memory_order_consume;c、memory_order_acquire;d、memory_order_release;e、memory_order_acq_rel;f、memory_order_seq_cst;这是原子类型上所有操作的内存顺序选项,是最严格的可用选项;顺序一致。Acquire and Release语意:Acquire semantics: is a property that c原创 2021-06-10 09:59:40 · 180 阅读 · 0 评论