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

程序和进程(Process):
几乎所有的操作系统都支持同时运行多个任务 , 一个任务通常就是指一个程序 。程序和进程的主要区别:程序是一个静态的指令集合 , 进程则是正在系统中活动的指令集合 。换句话说 , 运行中的程序就是进程 。
进程具有三个重要的性质:独立性、动态性、并发性
独立性:经常在操作系统中独立存在 , 拥有独立的资源和私有的地址空间 。没有经过进程自身允许 , 其它用户进程不能直接访问进程的地址空间 。动态性:进程是运行中的程序 , 具有自己的生命周期和各种不同状态 。并发性:多个进程可以在单个处理器上并发执行 , 互不影响 。所谓并发(concurrency)指的是同一时刻只能执行一条指令 , 但多个进程可以快速的切换执行 , 使得宏观上具有多个进程同时执行的效果 , 这种交错执行称为上下文切换 。并行(parallel)则指同一时刻有多条指令在多个处理器上同时执行
大部分操作系统都支持并发运行 , 一个CPU一个时间点只能运行一个进程 , CPU一直不断的在进程之间轮换执行 , 由于CPU的计算速度很快 , 所以会给用户同时运行多个进程的错觉 , 如:听歌的同时在上网 。进程过多后 , 就会明显感觉到执行速度的降低 。
线程(Thread)和进程:
线程时进程的执行单元 , 又叫做轻量级进程(Lightweight Process) 。线程在进程中的地位就像进程在操作系统中的地位一样 。一个进程可以有多个线程 , 但一个线程只能有一个父进程 。当进程被初始化后 , 就会创建一个主线程 , 通常大多数程序只要求有一个主线程 , 但也可以创建多个 , 线程之间是相互独立的 。此外 , 线程作为进程的一部分 , 可以拥有自己的堆栈、程序计数器(标记下一步开始执行的位置)、局部变量 , 但不占有系统资源 。进程内的多个线程共有进程的系统资源 。线程共享的资源包括:进程代码段、进程的公有数据等 , 线程的调度和管理由进程本身负责 。
归纳起来:一个操作系统可以同时执行多个任务 , 每个任务就是进程 。进程可以同时执行多个任务 , 每个任务就是线程 。
【线程的概念及与进程的区别 进程与线程的区别】多线程由于可以共享内存、文件句柄、其它进程应有的状态、线程间隔离程度比进程小等优点 , 使得相对于多进程而言 , 程序的运行效率、资源的占用程度、并发的性能较好 , 因此多线程编程具有很大的优势 , 在实际编程中应用广泛 。