定义:
进程是具有独立功能的应用程序在某个数据集上面的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分配的一个单位,它是比进程小的能够独立运行的独立单元,线程是不拥有系统资源的,只拥有程序运行必不可少的资源(如程序计数器,寄存器和栈),但它可以与同属一个进程的其他线程共享进程的资源。
关系:
一个线程可以创建和销毁另外一个线程,同一进程的多个线程可以并行执行。
相对于进程,线程相当于执行体的概念,他与其他同属一个进程的多个线程共享数据,但是有自己的栈,有独立的执行序列。
区别:
操作系统管理方式不同,进程拥有独立的地址空间,一个进程崩溃后,在保护模式下不会影响其他进程,线程是同一进程的多个执行路径。
线程拥有自己独立的堆栈和局部变量,但是多个线程间没有独立的地址空间,一个线程死掉就等于一个进程死掉,所以多进程程序比基于多线程的程序健壮。
但是进程进行切换时,消耗资源比较大,效率要低一些。同时要求并行和共享数据时,只能用线程。
总结:
一个程序至少包含一个进程,一个进程至少包含一个线程。
线程的划分尺度小于进程,使得多线程程序并发性高。
进程拥有独立的内存,多个线程共享内存,从而提高了程序运行效率。
执行过程的区别:每个线程拥有程序的入口、程序的出口、顺序执行序列,但是线程不能够独立运行,必须依存在应用程序中,由应用程序提供多线程运行控制。
优缺点:
线程开销小,但不利于资源的管理和保护,进程相反。
线程适合在SMP机器上运行,进程可以跨机器运行。
http://blog.csdn.net/yaosiming2011/article/details/44280797/ |