小菜一碟-线程基础知识(通俗篇、俗篇、俗),菜鸟老鸟,需要的都来看!
jpyc 2003-08-22 10:12:27 线程基础知识(通俗篇、俗篇、俗)
一、线程和进程
进程:调入内存准备执行的应用程序。由装入计算机内存的程序代码和操作系统及有此而创建的应用程序执行环境所组成,主要由下面几部分组成:
1。一个私有的地址空间(Address Space),这是进程可以使用的一组虚拟的内存地址;
2。程序相关的代码、数据;
3。系统资源(文件、系统同步对象等),是程序执行时,由系统分配的;
4。至少包含一个线程,即基本线程,此线程可以创建多个线程。
线程:进程内的一个执行单元,是操作系统分配CPU运行时间的基本实体。每个进程内的线程都保存有一些数据结构、CPU寄存器和堆栈,用于保存线程的执行环境,一个进程内可以包含多个线程,每个线程独立运行,并保持自己的堆栈和寄存器值。一个线程可以控制另一个线程的执行,进程的各个线程共享进程的虚拟空间和操作系统为此进程分配的系统资源。
二、多任务
多任务操作系统将其处理器的运行时间分成小的时间片段,并分配给多个线程,每个线程在操作系统指定的时间片段内运行。当线程使用完所有分配的时间片段,线程暂时停止执行,操作系统再将下一个时间段分配给其他线程执行。因为线程运行的时间片段非常段(约20MS),因此人的感觉是多个线程在计算机中同时执行。
有些功能强大的操作系统支持多CPU,这样的多线程就更有代表性,才是真正意义上的多线程!
三、线程调度
多任务操作系统要完成多个任务的并行运行,需要管理和调度不同的线程来使用CPU的运行时间:
非抢先式调度:
在该类操作系统中,一个线程只有完成现成调度程序所指定的时间片段后,才将微处理器的控制权交还该线程的调度程序,在此线程运行期间,所有其它线程只能等待,此类调度机制的操作系统实时响应较差(如WIN3.1)。
抢先式调度:
与非抢先式调度不同,当正在运行的线程处于“阻塞状态/调用SLEEP方法/有优先级更高的线程希望获得处理器运行时间”的情况下,操作系统线程调度程序可以终止此线程,因此实时性较强(WIN95/NT)。
线程优先级:
在抢先式调度操作系统中,优先级是操作系统的线程调度重要原则。由线程所属的进程和线程本身的优先级两方面确定。一个进程有两个不同的优先级别:实时、高、正常、空闲;进程内的线程有7个不同的优先级。
-------------------------------------------------------
通俗篇:
被闹钟闹了一下(按了一下启动按钮),从美梦中苏醒(系统开始启动),大梦初醒,睁开双眼(操作系统启动成功),“大梦谁先觉,平生我自知”,洗漱一下(简单任务,单一进程,一个线程就搞定了)。
今天没什么急事,采用“非抢先式调度”(用WIN3.1)就可以了,上会网,看会书吧!
突然,电话铃声急响,还是用“抢先式调度”,马上接听电话,处理客户问题,客户利益高于一切(高优先级)。搞定,退出该线程,继续上网,看书。
突发奇想,脑(CPU)中又产生一“进程”,写篇线程相关的东西!
晚上下班后,一边刷锅,一边洗碗,一边听音乐,一边想MM。。。。(典型的多任务,当然也是多线程的了)
对于精力过于充沛的(多CPU的),还可以搞点其它的。。。
注意:安全第一,要是被车撞,肯定要死机,重启到好说,要是硬件坏了,那就。。
-------------------------------------------------------
在DELPHI中建立线程的方法:
http://218.56.11.178:8020/web/technology/thread.htm
大家,有意见的提啊!不要客气,好的坏的多可以说,大家言论自由!