查看线程的源代码
←
线程
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
==线程知识== ===基本概念=== :一般来说,我们把正在计算机中执行的程序叫做“进程”(Process) ,而不将其称为程序(Program)。所谓“线程”(Thread),是“进程”中某个单一顺序的控制流。 :新兴的操作系统,大多采用多线程的概念,把线程视为基本执行单位,也是操作系统进行任务调度的基本单位。 ===发展历史=== :60年代,在操作系统中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者, 创建、撤消与切换存在较大的时空开销,因此需要引入线程;二是由于对称多处理器(SMP)出现,可以并行地运行多个执行单位,而多个进程并行开销过大。 因此在80年代,出现了能独立运行的基本单位——线程(Thread)。 ===工作原理=== :线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程不拥有系统资源,只有拥有一些必须的数据结构;它与父进程的其它线程共享 该进程所拥有的全部资源。进程可以创建和撤消线程,从而实现程序的并发执行。 :就象进程一样,线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。但是,与分隔的进程相比, 进程中的线程之间的隔离程度要小,它们共享内存、文件句柄等。 :进程可以支持多个线程,它们看似同时执行,但互相之间并不同步。一个进程中的多个线程共享相同的内存地址空间,这就意味着它们可以访问相同的变量和对象, 而且它们从同一堆中分配对象。尽管这让线程之间共享信息变得更容易,但您必须小心,确保它们不会妨碍同一进程里的其它线程。 :一般,线程具有就绪、阻塞和运行三种基本状态。 :在对称多处理器(SMP)的系统里,不同线程可以同时在不同的处理器上运行,甚至当它们属于同一个进程时也是如此。大多数支持多处理器的操作系统都提供编程接口 来让进程可以控制自己的线程与各处理器之间的亲和度(affinity)。 ===相关概念=== ===优势=== ===与进程的比较=== :进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块(PCB)中。以表示该进程拥有这些资源或正在使用它们。 另外,进程拥有一个完整的虚拟地址空间。 :与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。当进程发生调度时, 不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。 :线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制块(TCB)组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。 :进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;线程切换时,由于同不进程内的线程共享资源和地址空间, 将不涉及资源信息的保存和地址空间变化的问题,从而减少了操作系统的开销时间。 ===适用范围=== :典型的应用: :1. 服务器中的文件管理或通信控制 :2. 前后台处理 :3. 异步处理 ===基本操作=== :*创建(Create):线程在进程内创建出来,它可由进程创建,也可由线程创建。 :*阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。 :*激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。 :*调度(schedule):选择一个就绪线程进入执行状态。 :*结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放。 :*线程的另一个执行特性是同步。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。
返回
线程
。
个人工具
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
最近更改
随机页面
工具
链入页面
相关更改
特殊页面