2.3 多线程
2.3.1 多线程(Multithreading)概述
在一个程序中,有一些独立运行的程序片断,我们把它称作“线程”(Thread),利用它编程的程序称作“多线程处理”。举一个常见的例子,比如说用户界面。利用多线程界面,用户可按下一个出发点,程序就会马上作出响应,而不是等待用户等待当前程序完成才响应。
每个正在系统上运行的程序叫做一个进程,每一个进程包含一至多个线程。进程也可能是这个程序的整个或者是部分程序的动态执行状况。线程通常是一组指令集合,又或者是特殊的程序段,它可以在程序中独立执行,也可以理解它为代码运行的前后文。因此线程基本上是量级比较轻的进程,它的作用是在单个程序里执行多任务。也常由操作系统对多个线程的调度和执行负责。
线程就是程序中一个单独的顺序控制流程.在单个程序中同时运行多个线程,从而完成不同的工作,我们称它为多线程。
线程和进程的区别在就在于子进程和母进程都有独自的代码和数据空间,而多个线程它们却一个数据空间,每个线程有独自的执行堆栈和程序计数器为它执行前后文.多线程主要是为了节约CPU运行时间和效率,根据具体情况而定线程的运行中需要使用计算机的内存资源和CPU。
2.3.2多线程的解释
计算机编程中,一个基本的概念就是同时对多个任务进行控制。许多程序设计问题都要求程序能够停下当前的工作,而去处理一些其他问题,然后再返回主进程。可以通过多种方法达到这个要求。在最开始的时候,具备低级语言编程嫩里的人员编写一些“中断服务例程”,而通过硬件级的中断实现主进程的暂停。尽管这是一种有用的方法,但编出的程序不均有可移植性,因此造成了另一类的代价昂贵的问题。中断对那些实时性很强的程序任务来说,必要性是很大的。但对于其他问题而言,只要求将问题划分到独立运行的程序片断中,使整个程序能更加快捷地响应用户的请求。
一开始,线程作为一种工具,只是用于分配每个处理器的处理时间。但是,如果操作系统本身就支持多个处理器,那每个线程都可以分配给一个单独的处理器,真正的进入“并行运算”的状态。从程序编辑的角度来看,程序员可以不用关心到底使用了多少个处理器,这是多线程操作最有价值的特性之一。在逻辑意义上,程序被分割为了多个线程;如果机器本身都安装了多个CPU,那么程序会迅速运行,无需再做出任何的特殊调校。根据之前的论述,大家可能会有这样一种感觉,就是线程的处理是非常简单的。但是必须注意一个问题就是:必须共享资源!加入有数个线程同时运行,并且它们试图访问相同的资源模块,这时候就会遇到一个问题,举个例子就是,两个线程不会将信息同时发送给同一台及其。为了解决这个状况,对那些可共享的资源来说(比如接收机),在使用的时候它们一定要进入锁定状态。因此一个线程可以将资源锁定,完成任务后,再释放这个锁定,使其他线程就可以继续使用同样的资源。
多线程不单是为了同步完成多项任务而使用的,提高运行效率并不是主要任务,而是为了提高资源使用效率以便提高系统的效率。它是在同一时间完成多项任务的要求下去实现的。
最简单的比喻就是多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率,同时它的出现也带来了一些问题。
2.3.3 多线程的优缺点
(1) 优点: C++无线数据传输系统设计+文献综述(6):http://www.751com.cn/tongxin/lunwen_4800.html