首先来了解一下进程和线程。

进程是一个应用程序执行时的一个实例。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。

线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

简单的来说就是,进程是分配资源的最小单位,线程是任务执行的最小单位。

进程和线程的区别:

进程有独立的地址空间,一个进程崩溃后,在保护模式下,不会对其他进程有影响,而线程是共享其进程地址空间,没有单独的地址空间,一个线程崩溃了整个进程也就崩溃了。因此多进程的应用程序比多线程要健壮,但是由于进程间的切换消耗的代价比较高,对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

在linux中通过负载当前进程的属性可创建一个新的进程,新进程被clone出来,使得它可以共享资源(如文件、信号处理程序和虚存),当两个进程共享相同的虚存时,他们可以当做是一个进程中线程,但linux没有为线程单独定义,因此linux中的进程和线程没有区别。LInux用clone命令代替通常的fork命令创建进程。