线程的概念及与进程的区别(进程与线程的区别)

程序和进程(Process):

几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是指一个程序。程序和进程的主要区别:程序是一个静态的指令集合,进程则是正在系统中活动的指令集合。换句话说,运行中的程序就是进程。

进程具有三个重要的性质:独立性、动态性、并发性

独立性:经常在操作系统中独立存在,拥有独立的资源和私有的地址空间。没有经过进程自身允许,其它用户进程不能直接访问进程的地址空间。动态性:进程是运行中的程序,具有自己的生命周期和各种不同状态。并发性:多个进程可以在单个处理器上并发执行,互不影响。所谓并发(concurrency)指的是同一时刻只能执行一条指令,但多个进程可以快速的切换执行,使得宏观上具有多个进程同时执行的效果,这种交错执行称为上下文切换。并行(parallel)则指同一时刻有多条指令在多个处理器上同时执行

大部分操作系统都支持并发运行,一个CPU一个时间点只能运行一个进程,CPU一直不断的在进程之间轮换执行,由于CPU的计算速度很快,所以会给用户同时运行多个进程的错觉,如:听歌的同时在上网。进程过多后,就会明显感觉到执行速度的降低。

线程(Thread)和进程:

线程时进程的执行单元,又叫做轻量级进程(Lightweight Process)。线程在进程中的地位就像进程在操作系统中的地位一样。一个进程可以有多个线程,但一个线程只能有一个父进程。当进程被初始化后,就会创建一个主线程,通常大多数程序只要求有一个主线程,但也可以创建多个,线程之间是相互独立的。此外,线程作为进程的一部分,可以拥有自己的堆栈、程序计数器(标记下一步开始执行的位置)、局部变量,但不占有系统资源。进程内的多个线程共有进程的系统资源。线程共享的资源包括:进程代码段、进程的公有数据等,线程的调度和管理由进程本身负责。

归纳起来:一个操作系统可以同时执行多个任务,每个任务就是进程。进程可以同时执行多个任务,每个任务就是线程。

多线程由于可以共享内存、文件句柄、其它进程应有的状态、线程间隔离程度比进程小等优点,使得相对于多进程而言,程序的运行效率、资源的占用程度、并发的性能较好,因此多线程编程具有很大的优势,在实际编程中应用广泛。

(0)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@ZLME.COM 举报,一经查实,立刻删除。

相关推荐