引一篇讲什么是多线程的

引一篇讲什么是多线程的文章,来自于C++编程艺术

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

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

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

多线程对程序结构的改变

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

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

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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值