博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memcached入口函数(main)解析
阅读量:6103 次
发布时间:2019-06-20

本文共 1060 字,大约阅读时间需要 3 分钟。

  hot3.png

其实代码阅读没啥特别的,别人都写好了,如果注释又比较齐全,写代码分析文档有点脱裤子放屁的意思。

memcached网络部分依赖 libevent 实现,阅读之前最好读一读 libevent 文档,不然很多代码不好理解。

官网:
文档:

官网:
文档:

书籍:(可以生成为pdf,我只做了一份:)

1、设置信号处理函数:signal(SIGINT, sig_handler)

    man signal可以告诉你更多

2、设置参数默认值:settings_init()

    随后会被命令行指定值覆盖

3、随后是命令行选项分析,这个可以说是开源软件的标准,一开始都是这段,用的是getopt。有通用库的支持,写参数分析代码省时省力。

WIKI:(可以看到它支持很多主流语言和脚本)
文档:

4、设置哈希函数 hash_init

    hash.h有函数指针定义:typedef uint32_t (*hash_func)(const void *key, size_t length)

5、再后边根据参数设置其他参数的值

6、设置操作系统资源上限(resource limits)

    man getrlimit、man setrlimit可以查看更多细节

7、检查用户,禁止以root启动,指定用户是否存在

8、默认不启用SASL认证

9、是否守护进程模式,对我们的阅读没有影响,可以简单看看,退出主进程、输出转向

10、mlockall函数将进程虚内存地址锁定至RAM,防止页交换,默认不锁

11、初始化libevent,此函数在libevent2.0已经被 event_base_new代替,memchched尚未应对这个改动

12、分配并初始化各部分内存空间

13、初始化互斥(mutex)锁,初始化线程用的libevent管道描述符(一收一发),每线程有自己独立的event_base,创建监听receive FD的事件,创建并启动事件处理线程开始监听

14、创建Unix Socket或者TCP、UDP监听,并开始等待事件(server_socket_unix、server_sockets、event_base_loop)

顺便推荐几本书,身为程序员又没有读过,建议一看,俗话说艺不压身:

一时想不起更多,有机会再添加。

如果想继续在这个行业做下去,就要不断提高自己。话说回来,哪个行业不需要不断提高自己呢?除非你想一直呆在食物链最低端。

转载于:https://my.oschina.net/quanzl/blog/341799

你可能感兴趣的文章
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>