引一篇讲什么是多线程的

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

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

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

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

多线程对程序结构的改变

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

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

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

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多线程是指在一个程序中同时执行多个线程的编程模型。每个线程都是独立的执行路径,可以独立地运行和完成任务多线程的优势包括: 1. 提高程序的响应性:使用多线程可以将耗时的操作放到后台线程中执行,使得前台线程能够快速响应用户的操作。例如,在图形界面应用程序中,可以将耗时的数据加载或计算操作放到后台线程中,以保持界面的流畅性。 2. 提高系统的资源利用率:多线程可以充分利用多核处理器的优势,同时执行多个任务,提高系统的资源利用率。这对于需要处理大量并发请求或并行计算任务的应用程序非常有益。 3. 简化程序设计:使用多线程可以将复杂的任务拆分成多个线程,每个线程负责一部分工作,从而简化程序的设计和实现。例如,在网络服务器中,可以使用多线程来处理并发的客户请求,每个线程负责一个客户连接。 4. 共享数据和通信方便:多线程之间可以共享数据,这样不同线程之间的通信更加方便。通过合理地使用锁、信号量、管道等同步机制,可以实现线程间的数据共享和通信。 5. 并发编程的概念和技术:多线程编程是并发编程的基础,掌握多线程编程可以为学习和理解更复杂的并发编程概念和技术(如线程池、并发集合、消息传递等)打下基础。 需要注意的是,多线程编程也带来了一些挑战和注意事项,如线程安全问题、死锁、竞态条件等。因此,在设计和实现多线程程序时,需要仔细考虑并合理处理这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值