问题八:为什么要写多进程、多线程程序?这两者之间有何不同?该如何区分?

问题八:为什么要写多进程、多线程程序?这两者之间有何不同?该如何区分?

因为现在的PC机或者服务器都是多核的CPU,一次可以并发执行多个线程。如果程序中还使用单线程 / 单进程,没有有效地使用到CPU资源,对CPU资源是一种浪费。

一般编写多线程、多进程程序,线程或者进程的数量是和当前CPU的核心数量是一样的。比如Apache、mina或者Netty网络库,这样能发挥CPU多核的效率,能够使多个进程或者线程并发执行。

 

由于进程占用的资源比较大,而线程占用的资源比较少。所以在多进程和多线程程序中,随着CPU调度进程,进程上下文切换所花费的时间效率远远高于线程。

因为线程比较轻量、占用资源少,所以上下文切换快。多进程程序各进程之间数据共享、进程通信、进程互斥等操作非常复杂且不易实现。而线程由于是共享进程空间的,所以共享堆和.text、.data、.bss,因此线程之间的共享数据非常方便,也方便线程通信(notify、notifyAll、wait)和互斥(锁)的实现,所以大多数使用多线程程序。

你可能感兴趣的:(操作系统)