- 博客(7)
- 资源 (5)
- 问答 (4)
- 收藏
- 关注
原创 条件变量的使用
以前没怎么注意过,偶看到unix编程中的条件变量,写了个小例子测试, 运行一下就全明白了 编程实例: #include #include #include #include using namespace std; pthread_t pid[2]; pthread_cond_t cond = PTHREAD_COND_INITIALIZER; pthread_mutex_t mut
2015-06-25 16:39:27 821
原创 CAS无锁操作
CAS原理: CAS原语有三个参数,内存地址,期望值,新值。如果内存地址的值==期望值,表示该值未修改,此时可以修改成新值。否则表示修改失败,返回false,由用户决定后续操作。 缺点: 使用CAS会造成ABA问题 ABA 问题 thread1意图对val=1进行操作变成2,cas(*val,1,2)。 thread1先读取val=1;thread1被抢占,让t
2015-06-24 10:01:41 7253 1
转载 Linux内存管理 Slab分配器
采用伙伴算法分配内存时,每次至少分配一个页面。但当请求分配的内存大小为几十个字节或几百个字节时应该如何处理?如何在一个页面中分配小的内存区,小内存区的分配所产生的内碎片又如何解决?Linux采用Slab。 Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法。Jeff 的分配器是围绕对象缓存进行的。在内核中,会为有限的对象集(例
2015-06-23 16:18:29 593
原创 Memcached源码分析之三
Memcached网络处理-主要借助libevent+多线程模式进行网络处理 主线程只用main_base循环监听客户端的连接 声明一个全家变量main_base static struct event_base *main_base; /* initialize main thread libevent instance */ main_base = event_ini
2015-06-10 17:59:40 494
原创 Memcached源码分析之二
建议使用sourceinsight查看Memcached源码,本人所用源码是Memcached-1.4.23 我喜欢从main函数逐步跟踪查看源码,进行逐步分析。这也是本人第一次尝试,主要通过这样的方式提高学习。 Memcached.c main函数源码不在贴出 struct passwd *pw; linux使用struct passwd管理用户信息。struct passwd
2015-06-09 17:32:43 1496
原创 Memcached源码分析之一
Memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
2015-06-09 15:49:24 631
转载 信号signal
SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT 建立CORE文件终止进程,并且生成core文件 SIGILL 建立CORE文件 非法指令 SIGTRAP 建立CORE文件 跟踪自陷 SIGBUS 建立CORE文件 总线错误 SIGSEGV 建立CORE文件
2015-06-09 15:33:12 406
tcp 未连接会触发写事件EV_WRITE吗
2016-07-02
按照设定概率产生不重复随机数
2015-04-23
c++ 复制指针释放问题
2015-04-07
libevent多线程服务器错误
2015-03-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人