问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

“多线程”的原理是什么?

发布网友 发布时间:2022-06-18 23:35

我来回答

1个回答

热心网友 时间:2022-06-22 00:39

  多线程概述
  进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。
  线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。
  每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。每个线程具有自己的堆栈和自己的 CPU 寄存器副本。其他资源(如文件、静态数据和堆内存)由进程中的所有线程共享。所以线程间的通讯非常方便,多线程技术的应用也较为广泛。但是使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
  每个进程都有私有的虚拟地址空间,进程的所有线程共享同一地址空间。每个线程被CPU分配一个时间片,一旦被激活,它正常运行直到时间片耗尽并被挂起,此时,操作系统选择另一个线程进行运行。通过时间片轮转,又出于各个时间片很小(20毫秒级),看起来就像多个线程同时在工作。实际上,只有在多处理器系统上才是真正的在可得到的处理器上同时运行多个线程。基于Win32的应用程序可以通过把给定进程分解(或创建)多个线程挖掘潜在的CPU时间,而且还可以加强应用程序,以使用户提高效率,加强反应能力以及进行后台辅助处理。
  在Windows操作系统中,Win32应用程序可以在Windows平台上运行多个实例,每个应用程序实例都是一个独立的进程,而一个进程可以由不止一个线程来实现。对于一个进程来说,当应用程序有几个任务要同时运行时,建立多个线程是有用的。如打印时,利用多线程机制实现多线程,就可在需要打印时创建一个负责完成打印功能的打印线程。创建打印线程之后,系统就变成了多线程。当进行打印时,CPU轮换着分配给这两个线程时间片,所以打印和其他功能一起同时在运行,这就充分利用了CPU处理打印工作之外的空闲时间片,并且避免了用户长久地等待打印时间。这就是所谓的由多线程来实现的多任务,在进行打印任务的同时又可以进行别的任务。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。这一点在多线程编程时应该注意。
  Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,线程被分为工作者线程(Worker Thread)和用户界面线程(User Interface Thread)两大类。前者常用于处理后台任务,执行这些后台任务并不会耽搁用户对应用程序的使用,即用户操作无需等待后台任务的完成。后者常用来独立的处理用户输入和相应用户的事件。其中用户界面线程的特点是拥有单独的消息队列,可以具有自己的窗口界面,能够对用户输入和事件做出响应。在应用程序中,根据用户界面线程具有消息队列这一特点,可以使之循环等待某一事件发生后再进行处理。由于Windows95时抢先式多任务的操作系统,即使一个线程因等待某事件而阻塞,其他线程仍然可以继续执行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
冠状病毒酒精消毒怎么使用 袁咏仪主演的真爱之百万新娘哪个网站可以看 ...方便的话告诉我结局怎么样。陈玉是不是死了 冉冉东升可以组什么句子 求我姓冉的专属句子 弹弹堂高手之路全部过完给多少强化石 百度弹弹堂2里面的《高手之路高级高抛打法(高级)》《高手之路高级高差训 ... 弹弹堂工厂3怎么打 弹弹堂高手之路的任务怎么触发的 腹肌练习计划 什么是A4纸的读 背20页a4纸需要多少个小时 读一张A4纸需要多长时间 6页纸读几分钟 乌鸦救赎街头接吻是真的吗 侠客风云传1.74暗器怎么获得 一个金士顿8 GU盘,打不开也不能格式化 侠客风云传 暗器武功一共有几种? 清明上河图二十多条船表现了什么关系? 童装图片常用的平面设计方式有哪些 ...睡街头冻僵手脚难保,我们该如何正确控制自己饮酒量? 我爸今年64喝酒有时候会拉裤子上这是什么原因? 学期末喝酒喝高,吐了裤子脏了,没洗泡了差不多一个月,拿回洗干了发现不... 为什么酒喝多了会脱衣服裤子 我的牛仔裤喝啤酒流到裤子上,怎么洗干净衣服上啤酒污渍? 请问:湖南生姜怎样播种和栽培?它喜欢什么样的环境?谢谢。 喝酒醉了吐在裤子上第二天才知道,请问油迹怎么洗 三花茶都是什么花? ok和box的o发音相同吗 0K和Dog的0发音是一样的吗? 求一个电脑游戏,讲的是一个海盗狗的冒险,外国的,谁知道是什么游戏 国外一款老的弓箭手电脑单机版游戏? 三花茶的介绍 有一个国际组织图标,是联合国图标的背景中间竖一根针,上面缠着一条吐... 求国际知名品牌标志图标?? 求高手给个完美国际图标,30分 梦到女朋友不愿意结婚儿子痛哭流涕 ...有的女朋友,家里安排的,和兄弟们去接亲,不想结婚,兄弟们安慰我_百度... 一个五星一个麦穗是什么标志 2021成都文理学院录取分数线 纸质版照片怎么转成电子版 公司给员工买录音手表合法吗? 聊城网站建设哪家最便宜呢 儿童定位手表怎么删除对讲录音? 交易猫工作室代售,可靠吗 三花饮配方 原耽视频软件有哪些 根据汉语意思选择正确的英语翻译。 1. 打开你的书。 [ ] A. Open yo... 打开你的书来正如什么仿写怎么写? 打开你的书改为否定句