首先要实现多任务,通常设计Master-Worker模式Master负责分配任务,Worker负责执行任务,多任务环境下,通常是一个Master,多个Worker。
多进程:
- 用多进程实现Master-Worker ,主进程就是Master,其他进程就是Worker。
- 多进程模式最大的优点是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。
- 缺点是创建进程的代价大,在Unix/Linux、系统下可以用fork调用,在Windows下创建进程开销巨大。另外操作系统同时运行的进程数也是有限的,在内存和Cpu的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题。
多线程:
- 用多线程实现Master-Worker ,主线程是Master,其他线程就是Worker。
- 多线程的优点是 在Windows下,多线程的效率比多进程要高。
- 多线程致命的缺点是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。
- 在windows上,如果一个线程执行的代码出了问题,提示为“该程序执行了非法操作即将关闭”,其实是某个线程出了问题,但是操作系统会强制关闭整个进程。
- 在windows下 多线程的效率比多进程高,,所以微软的IIS服务器默认采用多线程模式。由于多线程存在稳定性问题,IIS的稳定性就不如Apache