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

📄 service.h

📁 类似apache2.0的多线程技术,目的在于解决网络服务器在并发客户数很大的情况下服务器进程分配(fork)而带来的效率瓶颈.
💻 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 + -