多线程与多进程

最近工作中,遇到一些效率问题,在考虑使用多线程或者多进程解决。

首先先明确一下,线程与进程的区别;

《操作系统原理》课本上的定义是:

线程是CPU调度的最小单位;进程是CPU资源分配的最小单位。定义很明确了,但是不好理解。

实际上可以这么理解,线程与进程都是CPU工作段的描述,粒度不同而已。

进程启动时CPU需要去加载除CPU之外的,显卡,外设等在资源,也就是程序上下文,再去执行该进程,结束后需要保存程序上下文,下次启动时再次调用。而线程则只要执行,不需要对程序上下文进行处理,因为进程已经为它申请了程序上下文。

因此,从进程和线程的本质看多进程与多线程。

多进程,启动了多个程序上下文,多个进程之间相互不影响,但是占用了大量的内存,而且,对CPU利用率没有提高,单纯的利用CPU的数量解决性能问题,比较适合多台机器运行的分布式程序。

多线程,只是将线程分给不同的CPU,提高CPU的利用率,要知道CPU是一个运行速度极快的怪物。CPU可以并发执行多个线程。多个线程由一个进程开启,因此值加载一份程序上下文,占用内存上切换简单。但是,多线程,的多个线程实际上是一个串行过程,一个挂掉,整个进程就挂掉,共享一份数据,也导致多线程同步并行执行困难。

这样看来,线程的出现,能够有效的提高CPU的使用率。另外,进程间的数据传递只能利用通讯的方式,费时不方便。而线程则是数据共享的方式。

posted @ 2018-05-02 09:40  yiquriyue  阅读(56)  评论(0)    收藏  举报