黑马程序员技术交流社区

标题: 进程和线程 [打印本页]

作者: 胡松涛    时间: 2012-7-16 20:34
标题: 进程和线程
进程和线程的区别
作者: 杨康    时间: 2012-7-16 21:10
进程是一个正在进行的程序,一个进行中的可以开启多个线程。
作者: 小高    时间: 2012-7-16 21:49
1、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 2、进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
作者: 冯大卫    时间: 2012-7-16 22:13
不同进程之间拥有独立的空间,而一个进程的不同线程之间共享空间!!这一本质区别决定了,不同的进程所干的是不同的任务,因为它们拥有各自的空间;一个进程的不同的线程干的事情是一个任务的某一步骤,因为它们具有相同的空间。

   进程和线程的区别在于粒度不同, 进程之间的变量(或者说是内存)是不能直接互相访问的, 而线程可以, 线程一定会依附在某一个进程上执行.

  举个例子, 你在Windows下开一个IE浏览器, 这个IE浏览器是一个进程.
你用浏览器去打开一个pdf, IE就去调用Acrobat去打开, 这时Acrobat是一个独立的进程, 就是IE的子进程.
而IE自己本身同时用同一个进程开了2个网页, 并且同时在跑两个网页上的脚本, 这两个网页的执行就是IE自己通过两个线程实现的.

值得注意的是, 线程仍然是IE的内容, 而子进程Acrobat严格来说就不属于IE了, 是另外一个程序.
之所以是IE的子进程, 只是受IE调用而启动的而已.
作者: 侯茂绵    时间: 2012-7-17 16:31
进程是操作系统资源分配的单位,而线程是操作系统执行的单位。
线程为了提高操作系统的并发性而引入的,而且线程的创建,销毁及调度的开销一般都远小于进程。
一个进程可以包含多个共享该进程的资源的线程,同一进程内的线程间的通信是很容易实现的。
作者: 李根    时间: 2012-7-17 16:51
一个程序至少有一个进程, 一个进程至少有一个线程
作者: 许庭洲    时间: 2012-7-17 16:55
1,一个程序至少有一个进程,一个进程至少有一个线程;
2,线程的划分尺度小于进程,使得多线程程序的并发性高;
3,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2