📄 propool.h
字号:
#ifndef _PROPOOL_H_
#define _PROPOOL_H_
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <limits.h>
#include <time.h>
#include <signal.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#define FILENAME_LEN 128
#define OFF_WAITTIME 10
#define KEY_FILE1 "POOL.shm"
#define KEY_FILE2 "LOCK.sem"
/***************** 定义枚举 **********************/
typedef enum EnumPoolStatus /* 进程池状态 */
{
PSTATUS_ON, /* 可用 */
PSTATUS_OFF /* 不可用 */
}EPoolStatus;
typedef enum EnumChildProcStatus /* 子进程状态 */
{
CSTATUS_ACT, /* 忙碌 */
CSTATUS_IDLE /* 空闲 */
}EChildProcStatus;
/***************** 定义结构 **********************/
/* 进程池结构*/
typedef struct StruPool
{
pid_t iPid; /*进程号 */
long lRate; /*子进程使用次数 */
long lLastTime; /*最近使用时间 */
long lPort; /*子进程侦听端口号 */
EChildProcStatus EStatus; /*子进程状态 0:空闲 1:忙碌 */
}Pool;
/*进程池状态结构*/
typedef struct StruPoolCtrl
{
EPoolStatus EPoolStatus; /*进程池可用状态 */
int iActProcNum; /*激活(正在使用)的进程数 */
int iInitProcNum; /*初始化进程数 */
int iValidProcNum; /*有效(总共)进程数 */
int iMaxProcNum; /*最大进程数 */
}PoolCtrl;
/***************** 全局变量 **********************/
Pool *g_SPool;
PoolCtrl *g_SPoolCtrl;
key_t SEMKEY_LOCK;
key_t SHMKEY_POOL;
key_t SHMKEY_POOLCTRL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -