⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propool.h

📁 在linux下面关于实现进程池的实例解析
💻 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 + -