📄 service.h
字号:
#ifndef _SERVICE_H#define _SERVICE_H#include <sys/types.h>#include <unistd.h>#include <semaphore.h>#define MIN_IDLE 5#define MAX_IDLE 10#define MIN_IDLE_THREAD 1#define MAX_IDLE_THREAD 2#define MAX_PROC 1024#define MAX_THREAD 32#define MAX_REQUEST 500#define I_NET 0 // internet套接字监听#define U_DOMAIN 1 // unix域套接字监听#define BOTH 2 // 两者均监听/* * 共享内存结构。 */struct ipc_mem { int num; // 进程总数 int idle; // 空闲线程数 sem_t sem; // 对num和idle进行加锁 sem_t sem_notify; //子进程用来通知父进程需要创建新的进程};/* * 主进程配置参数 */struct server_info { int type; // 服务监听方式。 int port; // i_net 方式下的端口 char path[256]; // u_domain 方式下套接字文件路径 int thread_num; // 一个进程内的线程数 int max_service; // 最大服务并发数};/* * 一些处理函数 */struct handler_info { int (*main_handler)(int fd); //应用协议主函数 int (*init_handler)(); //所有回话都需要的一些初始化操作 int (*exit_handler)(); //程序结束时清理操作};/* * 注意当thread_num > 1时,即在预分配、线程池模式下,han_info里的函数应线程安全。 */int start_server(struct server_info *ser_info, struct handler_info *han_info);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -