为什么要使用线程池和进程池?
(1)动态创建子进程(子线程)是比较耗时的,这将导致较慢的客户响应
(2)动态创建的子进程(或子线程)通常只用来为一个客户服务(除非做特殊处理),这将导致系统上产生大量的细微进程(或线程)。进程(或线程)间的切换将消耗大量的CPU
(3)动态创建的子进程是当前进程的完整映像当前进程必须谨慎地管理其分配的文件描述符和堆内存等系统资源,否则子进程可能复制这些资源,从而使系统的可用资源急剧下降,进而影响服务器的性能
一、进程池
进程池是由服务器预先创建的一组子进程,进程池中的所有子进程都运行着相同的代码,并且具有相同的属性
二、线程池
线程池中的线程数量应该和CPU数量差不多
1、当有新的任务到来,主进程通过什么方式选择进程池中的某个子进程?
(1)最简单、最常用的算法是随机算法和轮流算法。更智能、更优秀的算法将使任务在各个工作进程中更均匀的分配,从而减