Chinaunix首页 | 论坛 | 博客
  • 博客访问: 301658
  • 博文数量: 86
  • 博客积分: 2050
  • 博客等级: 大尉
  • 技术积分: 1215
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-29 10:29
文章分类

全部博文(86)

文章存档

2011年(2)

2010年(77)

2009年(7)

我的朋友

分类: LINUX

2010-01-19 11:47:13

 

 
在开始之前,有必要准确地定义术语多线程的含义。多线程是多任务的 特殊形式。通常,有两种类型的多任务:基于进程和基于线程的多任务。进程本质上是正在执行的程序。因此,基于进程的多任务就是允许您的计算机同时运行两个 或者更多程序的特性。例如,基于进程的多任务允许您在使用电子制表软件或者浏览Internet的同时运行文字处理程序。在基于进程的多任务中,程序是调 度程序可以分派的最小代码单元。

线程是可执行代码的可分派单元。这个名称来源于“执行的线索”的概念。在基于线程的多任务的环境中,所有进程有至少一个线程,但是它们可以具有多个 任务。这意味着单个程序可以并发执行两个或者多个任务。例如,文本编辑器可以在打印文本的同时格式化文本,只要这两个动作是被两个独立的线程执行。基于进 程的多任务与基于线程的多任务之间的区别可以归纳如下:基于进程的多任务处理程序的并发执行,基于线程的多任务处理相同程序的不同片断的并发执行。

在前面的讨论中,需要明确:只有在多CPU的系统中,才可能有真正的并发执行,在那里每个进程或者线程可以不受限制地访问CPU。对于单个CPU的 系统(在当前使用的系统中,这是主流),仅能够在表面上做到并发执行。在单个CPU的系统中,每个进程或者线程都接收一部分CPU时间,时间的数量由几个 因素来确定,包括进程或线程的优先级。尽管大多数计算机并没有真正意义上的并发执行,但是在编写多线程应用程序的时候,您应该假定它确实有并发能力。这是 因为您不能够知道单个线程执行的确切顺序,或者它们是否能够按照相同的顺序执行两次。因此,最好假定程序确实是在并发执行。

多线程对程序结构的改变
多线程改变了程序的基本结构。不同于按照严格的线性方式执行的单线程程序,多线程程序并发地执行它自身的各个部分。这样,所有的多线程程序都包含了相似的元素。因此,多线程程序的主要问题是管理线程之间的交互。

如前所述,所有的进程都至少包含一个执行线程,称之为主线程。主线程在程序开始时创建。在多线程程序中,主线程创建一个或者多个子线程。因此,每个 多线程的进程都以一个执行线程开始,然后创建一个或者多个附加的线程。在设计合理的程序中,每个线程都代表一个逻辑上独立的活动单元。

多线程的主要优点是可以让您编写非常高效的程序,因为它使得您可以利用大多数程序都具有的空闲时间。大多数的I/O设备,无论是网络端口、磁盘驱动 器还是键盘,速度都比CPU慢很多。通常,程序将主要的执行时间都花费在等待接收或者发送数据上。通过谨慎地使用多线程,您的程序可以在空闲的时候执行另 一个任务。例如,当程序的一部分通过Internet发送文件时,另一个部分可以读取键盘的输入,还有一个部分可以将下一步要发送的数据块缓存。

阅读(885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~