介绍 高并发服务器 (1)要求大规模的连接/会话可能同时进行 (2)列子:Web 服务器, 邮件服务器 线程池架构 (1) 每个连接分配一个线程,将导致过多的线程
(2) 线程消耗内存,比如堆栈等等
(3) 操作系统创建和关闭线程,都将花费很多的时间在线程之间的切换 2
线程模型 基于会话模型 (1) 每个线程服务于一个客户端,比如 HTTP 会话
(2) 线程被用于状态跟踪和 CPU 调度
(3) 活跃线程的数量等于并发客户端会话的数量 基于 I/O 模型 (1) 将状态跟踪从 CPU 调度中分离出来
(2) 线程是所有同质,仅为 I/O 调用保持状态
(3) 一个线程可以服务于不同的会话,在不同的时刻
(4) 一个会话可以被服务,通过不同的线程,在不同的时刻
(5) 因此,从一个线程不是专门对于一个会话,仅仅专门对于一个I/O 请求处理
基于 I/O 的线程调度 并发限制 (1) 线程是和CPU 绑定 最大活跃线程的个数 == CPU 个数 (2) 线程是和I/O 绑定 最大的工作线程个数 >= I/O 并行个数 (3) 根据实验/基准设置 线程池大小 (1) 线程是和CPU 绑定 等于并发限制数 (2) 线程是和I/O 绑定 最大的工作线程个数 >= I/O 并行个数 (3) 根据实验/基准设置 查询系统信息 typedef struct _SYSTEM_INFO { union { DWORD dwOemId; struct { WORD wProcessorArchitecture; WORD wReserved; }; }; DWORD dwPageSize; LPVOID lpMinimumApplicationAddress; LPVOID lpMaximumApplicationAddress; DWORD_PTR dwAc