文档详情

编程思想之多线程与多进程.pdf

发布:2019-03-25约3.64万字共42页下载文档
文本预览下载声明
目 录 (1)——以操作系统的角度述说线程与进程 (2)——线程优先级与线程安全 (3)——Java中的多线程 (4)——C++中的多线程 本文档使用 看云 构建 - 2 - (1)——以操作系统的角度述说线程与进程 (1)——以操作系统的角度述说线程与进程 原文 :http///luoweifu/article/details 作者 :luoweifu 什么是线程 任务调度 进程 线程 进程与线程的区别 多线程与多核 一对一模型 多对一模型 多对多模型 查看进程与线程 线程的生命周期 什么是线程 什么是线程 ?线程与进程与有什么关系 ?这是一个非常抽象的问题 ,也是一个特别广的话题 ,涉及到非常 多的知识。我不能确保能把它讲的话 ,也不能确保讲的内容全部都正确。即使这样 ,我也希望尽可能地把 他讲通俗一点 ,讲的明白一点 ,因为这是个一直困扰我很久的 ,扑朔迷离的知识领域 ,希望通过我的理解 揭开它一层一层神秘的面纱。 任务调度 线程是什么 ?要理解这个概念 ,须要先了解一下操作系统的一些相关概念。大部分操作系统(如 Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式 ,也就是说一个任务执行一小段时间后 强制暂停去执行下一个任务 ,每个任务轮流执行。任务执行的一小段时间叫做时间片 ,任务正在执行时的 状态叫运行状态 ,任务执行一段时间后强制暂停去执行下一个任务 ,被暂停的任务就处于就绪状态等待下 一个属于它的时间片的到来。这样每个任务都能得到执行 ,由于CPU的执行效率非常高 ,时间片非常短 , 在各个任务之间快速地切换 ,给人的感觉就是多个任务在 “同时进行” ,这也就是我们所说的并发(别觉得 并发有多高深 ,它的实现很复杂 ,但它的概念很简单 ,就是一句话 :多个任务同时执行)。多任务运行过程 的示意图如下 : 本文档使用 看云 构建 - 3 - (1)——以操作系统的角度述说线程与进程 图 1 :操作系统中的任务调度 进程 我们都知道计算机的核心是CPU ,它承担了所有的计算任务 ;而操作系统是计算机的管理者 ,它负责任务 的调度、资源的分配和管理 ,统领整个计算机硬件 ;应用程序侧是具有某种功能的程序 ,程序是运行于操 作系统之上的。 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程 ,是操作系统进行资源分配和 调度的一个独立单位 ,是应用程序运行的载体。进程是一种抽象的概念 ,从来没有统一的标准定义。进程 一般由程序、数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能 ,是控制进程执行的指 令集 ;数据集合是程序在执行时所需要的数据和工作区 ;程序控制块(Program Control Block ,简称 PCB) ,包含进程的描述信息和控制信息 ,是进程存在的唯一标志。 进程具有的特征 : 动态性 :进程是程序的一次执行过程 ,是临时的 ,有生命期的 ,是动态产生 ,动态消亡的 ; 并发性 :任何进程都可以同其他进程一起并发执行 ; 独立性 :进程是系统进行资源分配和调度的一个独立单位 ; 结构性 :进程由程序、数据和进程控制块三部分组成。 线程 在早期的操作系统中并没有线程的概念 ,进程是能拥有资源和独立运行的最小单位 ,也是程序执行的最小 单位。任务调度采用的是时间片轮转的抢占式调度方式 ,而进程是任务调度的最小单位 ,每个进程有各自 独立的一块内存 ,使得各个进程之间内存地址相互隔离。 本文档使用 看云 构建 - 4 - (1)——以操作系统的角度述说线程与进程 后来 ,随着计算机的发展 ,对CPU的要求越来越高 ,进程之间的切换开销较大 ,已经无法满足越来越复杂 的程序的要求了。于是就发明了线程 ,线程是程序执行中一个单一的顺序控制流程 ,是程序执行流的最小 单元 ,是处理器调度和分派的
显示全部
相似文档