会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
wa小怪兽
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
下一页
2020年6月21日
基于FIFO的c++多进程log封装
摘要: 1 #ifndef PROCESS_LOG_H 2 #define PROCESS_LOG_H 3 4 #include <string> 5 #include <sstream> 6 #include <cstring> 7 8 #include <fcntl.h> 9 #include <sys
阅读全文
posted @ 2020-06-21 17:35 wa小怪兽
阅读(313)
评论(0)
推荐(0)
2020年6月20日
pthread_mutex_lock源码分析
摘要: 直接把注释写到代码中: int __pthread_mutex_lock (pthread_mutex_t *mutex) { unsigned int type = PTHREAD_MUTEX_TYPE_ELISION (mutex); //安全检查 LIBC_PROBE (mutex_entry
阅读全文
posted @ 2020-06-20 20:49 wa小怪兽
阅读(3355)
评论(0)
推荐(0)
2020年6月19日
c++获取线程id
摘要: c++11的thread库提供了获取tid的接口: std::this_thread::get_id() 这个接口返回的是一个内存地址指向表述线程的结构体(pthread也是一样)。 有的时候这种方式获取的pid过长,可以使用syscall获取lwp,也就是top -H中看到的id,但也要注意sys
阅读全文
posted @ 2020-06-19 14:42 wa小怪兽
阅读(5945)
评论(0)
推荐(0)
2020年6月17日
一个基于c++的log库
摘要: 使用两个缓存区存放日志,每个缓存区为一个hash表,通过线程id计算对应的hash值,将日志存入对应的位置。 一个log线程读取缓存区,并将其写入log文件,每次将两个缓存区更换,防止锁争用的开销,将缓冲区的日志写入文件后再次对换缓冲区,循环往复。 logger.h 1 #ifndef LOGGER
阅读全文
posted @ 2020-06-17 20:27 wa小怪兽
阅读(542)
评论(0)
推荐(0)
2020年6月3日
c++头文件循环引用
摘要: 当两个头文件a.h和b.h存在相互引用的状况时,可以在其中一个头文件预先定义类型。如: // A.h class B; class A{ B data; public: void fun(); }; //B.h #include "A.h" class B{ public: int data; }
阅读全文
posted @ 2020-06-03 16:56 wa小怪兽
阅读(1137)
评论(0)
推荐(0)
2020年5月7日
通过&运算获得下标
摘要: 看书看到这个地方,使用&运算计算hash对应的下标。 两个数&运算得到小于等于两个数中最小的值,位运算比%运算效率更高。
阅读全文
posted @ 2020-05-07 20:49 wa小怪兽
阅读(219)
评论(0)
推荐(0)
2020年5月6日
函数调用栈维护过程
摘要: 涉及到以下汇编指令: pushl: 入栈 ebp指向栈底 esp指向栈顶 入栈时只需要将esp下移, 将入栈的值放入esp指向的地址,如下图所示: popl: 出栈 先将栈顶的数据保存,再将esp上移 call:顾名思义,调用一个函数 调用一个函数需要将当前执行到的指令位置(eip寄存器的值)保存,
阅读全文
posted @ 2020-05-06 23:17 wa小怪兽
阅读(276)
评论(0)
推荐(0)
2020年5月5日
函数重载的实现机制
摘要: 函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。 为了实现函数重载的功能,函数名就不能再作为一个函数的唯一标识,而是使用了name-mangling方法将函数名转化为了一个独一无
阅读全文
posted @ 2020-05-05 22:16 wa小怪兽
阅读(355)
评论(0)
推荐(0)
2020年5月3日
右值引用的注意事项
摘要: 不要将函数的返回值设为&&, std::string &&get(){ std::string s = "str";return std::move(s); } 代码中返回的字符串s在函数返回时就已经离开作用域调用析构函数,函数的得到的返回值其实是一个野指针。
阅读全文
posted @ 2020-05-03 13:16 wa小怪兽
阅读(177)
评论(0)
推荐(0)
2020年5月2日
linux获取日期时间
摘要: 使用gettimeofday(),没有系统调用的开销。 std::string getTime(void) { timeval tv; tm * time; std::stringstream ss; if(gettimeofday(&tv, nullptr) == -1){ throw errno
阅读全文
posted @ 2020-05-02 23:49 wa小怪兽
阅读(585)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
7
下一页
公告