专栏名称: 奥斯特洛司机
朝闻道,夕死矣。为中产而奋斗的小编
51好读  ›  专栏  ›  奥斯特洛司机

系统设计总结

奥斯特洛司机  · 简书  ·  · 2019-04-19 11:04

正文

#技术总结

1、修改进程名

原理:修改命令行参数的第一个参数的名字,需要移动环境变量的存储地址。

框架总结

通讯框架

通讯框架采用多进程的设计方法,一个master进程,多个worker进程。

master进程:

1、等待信号并处理信号。

2、负责生成和管理worker进程,当worker进程死掉,则重启worker进程。

3、日志文件类的初始化

单例类实现,类中套类,用于析构对象。类负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。用到静态成员函数,和静态数据成员。构造函数是私有的。

初始化的时候打开文件描述符,读取文件中的配置项和值放在vector<结构体>中。

4、配置文件类的初始化

5、全局变量的初始化

6、信号的初始化

7、socket的初始化

8、创建守护进程

9、释放资源

10、环境变量搬家


worker进程:

1、子进程初始化

一、清空屏蔽的信号集,不屏蔽信号。创建线程池,配置项配置的是每个子进程要创建的线程数量。

创建线程并使所有线程卡在pthred_cond_wait()函数中。

此时主线程返回继续执行。

二、Initialize_subproc()初始化一些互斥量,信号量,创建用来发数据的线程,创建用来回收连接的线程,创建专门用来处理到期不发心跳包的用户踢出的线程。







请到「今天看啥」查看全文