www.pudn.com > ProcePool.rar > propool.h


#ifndef _PROPOOL_H_ 
#define _PROPOOL_H_ 
 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
 
#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;