10.5 多进程编程与多线程编程对比
核心区别
多进程:就像一条街道上并排行驶的多辆车。
每个进程都有自己独立的内存空间、资源。
它们互不干扰,一个进程崩溃不会直接影响另一个进程。
但它们之间通信比较麻烦,需要靠进程间通信IPC(如管道、消息队列等)。
多线程:就像一辆大型公交车,里面有多个乘客(线程)。
所有线程共享同一进程的内存空间和资源。
如果一个线程崩溃,整个进程都可能完蛋。也容易出现资源竞争的问题(即同步互斥),需要通过上互斥锁、使用信号量、条件变量来解决。
可见
- 多进程编程较多线程而言安全性更高,单个进程的失败不会波及其它进程,而任何一个线程的非法操作都可能破坏共享数据,导致整个进程终止。
- 多进程较多线程而言开销较大,创建新进程需要分配独立的内存和资源,切换进程成本更高。而多线程切换开销小,速度也更快。
应用场景
多进程的应用场景
要求高稳定性和高隔离性的任务,即单个任务是失败不会影响整体系统,如Web服务器,浏览器等
多线程的应用场景
任务需要频繁等待外部响应,如Web服务器处理请求,需要实时处理数据的游戏服务器等