4.1.2.2 MASTER_PROC结构体
2016-04-07 10:26
316 查看
/master/master.h typedef struct MASTER_PROC { MASTER_PID pid; /*child process id */ unsigned gen; /*child generation number */ int avail; /* availability */ MASTER_SERV *serv; /*parent linkage */ int use_count; /* number of servicerequests */ } MASTER_PROC;
pid:子进程id。
gen:子进程计数,执行master_spawn时递增。
avail:表示该子进程是否可用,为0或1:
#define MASTER_STAT_TAKEN 0 /*this one is occupied */
#define MASTER_STAT_AVAIL 1 /*this process is idle */
子进程是否可用的意思是子进程是否可以接收下一个请求,可接收则状态为MASTER_STAT_AVAIL,否则为MASTER_STAT_TAKEN。子进程的avail或taken是以“服务一个请求”为单位的:
/master/single_server.c 278 if (master_notify(var_pid, single_server_generation, MASTER_STAT_TAKEN)< 0) 279 /* void */ ; 280 if (single_server_in_flow_delay && mail_flow_get(1) < 0) 281 doze(var_in_flow_delay * 1000000); 282 single_server_service(stream, single_server_name, single_server_argv); 283 (void) vstream_fclose(stream); 284 if (master_notify(var_pid, single_server_generation, MASTER_STAT_AVAIL)< 0)
当要开始为一个请求服务了,调用278行的master_notify通过管道通知父进程子进程状态为MASTER_STAT_TAKEN。
282行为请求提供服务。
284行服务完成后,通知父进程子进程完成了这次服务,将子进程状态置为MASTER_STAT_AVAIL。
serv:父进程链接。
use_count:已完成服务数。
相关文章推荐
- Centos ftp服务器安装配置
- 剑指offer 面试题题目汇总
- android:EditText开始光标在text内容的左边,将其改为初始化在右边
- 用java编写的一个迪杰斯特拉算法(单源最短路径算法,Dijkstra算法)。
- Android NFC技术开发<一>
- 归并排序
- Apple Airplay protocol crack
- JDBC中关于Connection, PreparedStatement, ResultSet是否关闭的一些思考
- C++第三次实验1-个人所得税计算器
- AngularJS 模态对话框
- MAT使用
- SoundPool的使用
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- Linux 上格式化ssd硬盘操作步骤
- MySQL如何发型不乱的应对半年数十TB数据增量
- Eclipse建springmvc项目资料整理
- Spark初试之WordCount
- android开发判断手机网络连接状态
- 4.1.2.1 MASTER_SERV结构体
- 虚幻4 小笔记