因为 Linux 对进程的处理异常高效,而线程则有时候会遇到诸如锁定(locking)之类的相关问题,所以通常在 Linux 下总是会去优先使用进程。
但当遇到进程和线程处理能力相当的情况时,比如我要写一个 web 服务器,该如何选择呢?
Linux 进程 线程
已有项目基本上都是一 CPU 一进程(管理进程除外)。如:
多进程写起来比多线程方便不容易出错又能充分利用 CPU。特别是高级语言如 Python 有全局解释器锁的。
异步 IO
多进程服务器的一个重要优势是如果某个处理单元遇到问题崩溃了(比如SIGSEV),那也只是一个进程崩溃了而已,其他提供服务的进程还都在。
但是如果是用线程的话,一个线程挂了,所有的在同一个进程内的线程就都跪了。
不过这只是一个参考因素而已,具体是用线程还是进程,还得看你所要做的服务器的具体的模型,才能真正下定论。
有几百个进程却只有几G的内存,求解释这几百个进程如何共享内存的?
Linux/Windows在多CPU时控制CPU使用率时表现为什么不同?
如何在Linux下用c语言创建守护进程并监控系统运行期间的所有进程?
mysql实例与连接
linux下有什么办法可以获得进程的udp流量
问一个小白的问题,nodejs是单线程的,可是为什么支持开启子进程?
学习Linux的几点建议
最先进的战舰也使用Linux