什么是线程?(50分)

  • 主题发起人 seventhlion
  • 开始时间
一个程序(进程)在任一时间内有一个或几个执行任务(不太严格的说),
单独的每个任务就是线程。
去看看Delphi附带的多线程例子吧,很简单也很经典。
 
同一个进程里面不同的线程:
1、自己的时间片
2、同一个地址空间
 
进程就是在任一时间内能执行多个任务,单独的每个任务就是一个线程。
看看delphi中关于冒泡、选择、快速三法排序的多线程例子,很形象。
 
线程,就是象线一样程序,顾名思义,就是很多的线程组成一个任务,
当然不用线程的话,只有一个主线程而已。
任务由于老机制问题不能达到真正的并行处理,只是实现了任务切换,
于是就用多线程完成这个梦想吧,虽然实现的还不是那么完美!:)
 
线程和进程有些类似,但又不一样.
线程是包含于进程下的一个概念,
他有自己的时间片和同一地址空间
 
调入内存准备执行的应用程序称进程。
线程是进程中的一个执行单元。
举个例子吧
一个死循环,按什么键都不接受。因为它是单线程的。
如果你把这个死循环放进一个线程中,做成一个多线程的程序,
你按其它按钮就有反应了。
明白了吗?
 
静态的代码是程序
程序的一次执行是进程
一个进程总是它本身的线程
一个进程以可以分为多个片段即线程.
希望没有误人子弟.
学习操作系统设计时没有认真学.
 
线程(thread)就是西装(thread)
服务器是老板,比较成功的有Unix、NT4.0等人士
只有老板穿得起名贵的西装,如果你是在晕酒吧里面泡的打工仔,就还是不要穿,因为据说在酒吧里面容易搞脏西装
 
线程又称轻行进程,进程拥有资源,线程不拥有资源(除了极少的一点必要的资源)
都是为了提高系统的利用率。都是程序运行的实例
 
从进程开始说起:
进程通常被定义为一个正在运行的程序的实例,它是资源分配的单位;
线程没有很确切的定义,它是CPU进行调度的单位。
进程是不活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。
线程由两个部分组成:
一是操作系统用来管理线程的内核对象,内核对象也是系统用来存放线程统计信息的地方。另一个是线程的堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。
 
线程有点类似于生产流水线,若干个工人同时在干.假如生产这个产品的过程是一个进
程的话,那每个工人所作的工作便是线程.当然,这个比方并不是很确切,因为每个进程
都必须有一个主线程.最好看一下操作系统有关书籍.:)
 
程序、进程、线程着三个概念最容易搞浑,区分程序还简单一些,
当一个程序没有得调入系统运行的时候,就是程序。
区分进程同线成则要困难很多,尤其是在不同的操作系统下面他们的含义
也不相同。一般的操作系统书关于这个区分讲得都不是很清楚,对unix、linux
以及windowsNT来讲,进程同线程不是很相同。
对unix、linux来讲,进程是操作系统可以调度的单位,是一个运行的程序。
早期的unix中是不存在线程的。新的unix引进了线程,同时引进了三种实现
线程的方式,分别为:用户线程、核心线程、以及混合线程。需要注意的就是
对unix来讲,进程可以产生线程,也可以不产生线程,就是说,线程同进程在
每种程度上讲,都是操作系统调度的单位。
对windowsNT(win32)来讲,同unix系统区分就非常大,win32的进程并不是
操作系统调度的单位,只有win32的线程才是。说穿了,就是win32的进程仅仅
是程序执行时的一个环境,就是说,进程是程序执行时的各种资源(包括4G内存、
系统堆、堆栈、其中的文件、以及其中的组成线程)的构成的一个环境。对win32
来说,操作系统调度的单位就是线程,进程是不被调度的。
通常在win32中,系统一般使用的是unix下的核心线程方式,任何win32程序
一旦调入系统,系统生成所有进程环境后,自动建立一个主线程,程序设计者
可以根据需要,再建立其他的线程,这样,在一个程序内部也是实现了并行运行。
 
简单的说,线程是进程的一个子程序段!可以并行的东东!
 
多人接受答案了。
 
顶部