内存模型 多线程和多进程的区别( 二 )


2. 多进程缺点
逻辑控制复杂,需要和主程序交互;需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算多进程调度开销比较大;五. 多线程
1. 多线程的优点
无需跨进程边界;程序逻辑和控制方式简单;所有线程可以直接共享内存和变量等;线程方式消耗的总资源比进程方式好;
2. 多线程缺点
每个线程与主程序共用地址空间,受限于2GB地址空间;线程之间的同步和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性;到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU
在开发中,最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理 。当然你也可以利用多线程+多CPU+轮询方式来解决问题 。方法和手段是多样的,关键是自己看起来实现方便有能够满足要求,代价也合适 。

内存模型 多线程和多进程的区别

文章插图