memcached代码阅读(-)

 

最近想研究一下memcached实现,主要目的是熟悉和学习Linux C的开发,这个对android native开发和服务端的开发都是相通的,下面只是简单的看了下memcached.h和memcached.c main入口函数的源码,先把大概的理解记录一下,还有很多细节没有深入了解,慢慢来把。整个过程看的还是比较吃力的,对libc的库函数很不了解。

memcached版本1.4.9

 

Memcached.h

主要定义了memcached主要的数据结构和方法。

比如几个主要的结构定义:

1. memcached链接conn

2. memcached存储结构_stritem

3. memcached的设置结构settings

4. 全局状态stats

5. 。。。。。。

 

Memcached.c main函数代码阅读

main函数基本流程:

1. 判断libevent版本,需要大于1.3

2. 截获SIGINT信号的处理(这个为什么截获,还没有深入了解)

3. 初始化settings结构的一些信息,主要是memcached运行时的一些参数

4. 初始化udp处理线程数

5. 初始化sasl处理协议(对sasl不太了解)

6. 设置tcp和udp的端口

7. core文件的访问的设置

8. 检查和设置打开文件的数目

9. 用户权限的判断,禁止用root权限运行

10. 如果支持sasl验证,进行响应初始化

11. 守护进程处理,忽略SIGHUP信号的处理(守护进程不处理SIGHUP?这个在确认一下)

12. 处理内存翻页,锁定进程内存翻页到交换区(mlockall)

这个是为了什么?禁止翻页是不是优化访问速度?

13. 初始化libevent主线程

14. 初始化一些全局状态(stats_init)

15. 初始化chunk(slabs_init)??

打问号,需要继续看代码

16. 初始化连接池conn_init

17. 忽略SIGPIPE信号,避免因为访问关闭管道导致进程退出

18. 初始化工作线程(thread_init)

19. 创建assoc 维护线程? assoc还没高明白

20. 初始化时序clock_handler,这个还不太明白

21. socket初始化(需要继续看代码细化过程)

22. 保存进程文件save_pid

23. 开始事件循环event_base_loop

24. 一些资源清理


以后希望有时间每一条展开深入了解,并做笔记

你可能感兴趣的:(服务端,Linux)