- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C课件第16章多任务与多线程编程
第16章 多任务与多线程编程;本章主要教学内容;第16章 多任务与多线程编程;16.1 程序、进程和线程概述;;;16.1.1 多任务、进程和线程; 一个进程可以有一个或多个线程,其中一个是主线程。;16.2 线程的种类;16.16.1 MFC中的线程类;16.16.1 MFC中的线程类;16.16.2 用户界面线程(UI);16.16.3 工作者线程;16.3 线程的创建、启动和终止;一、AfxBeginThread函数用来创建工作者线程的调用格式:;;;;16.函数返回值的说明:;;;CWinThread* pWinThread;
pWinThread=AfxBeginThread(
ControlFunction,
pParam,
THREAD_PRIORTY_NORMAL,
0,
CREATE_SUSPENDED,
NULL);;;;;;;16.3.3 线程的终止;16.3.3 线程的终止;16.3.3 线程的终止;VOID WINAPI ExitProcess( UINT uExitCode ); ;16.4.1 线程的运行状态的设置;16.4.1 线程的运行状态的设置;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.2 线程的优先级;16.4.3 线程间的通信;16.4.3 线程间的通信;16.4.3 线程间的通信;16.4.3 线程间的通信;16.4.3 线程间的通信;三、使用同步类来实现线程之间的通信和控制
在16.5小节中将详细介绍;16.5 在VC++环境中使用同步对象;16.5 在VC++环境中使用同步对象;16.5 在VC++环境中使用同步对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象; 补充说明:在MFC中,CEvent类对象有两种类型,分别是所谓的手工事件和自动事件。对于自动事件,当其获得信号后,就会释放下一个可用的线程。一个自动 CEvent对象在被至少一个线程释放后会自动返回到无信号状态;而人工事件对象获得信号后,释放所有可利用线程,直到调用成员函数ReSetEvent()将其设置为无信号状态时为止。
注意:在创建CEvent类的对象时,默认创建的是自动事件。 ;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;16.5.1 事件对象;6. WaitForSingleObject( ):
其原型声明如下:
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
); 当在线程的执行函数中调用该函数时,线程暂时挂起,系统监视hHandle所指向的对象的状态。如果经过dwMilliseconds毫秒后,hHandle指向的对象变为有信号状态,则WaitForSingleObject()返回,线程被释放,且返回值为WAIT_TIMEOUT;如果在挂起的dwMilliseconds毫秒内,线程所等待的对象在某一时刻变为有信号,则该函数立即返回,返回值为WAIT_OBJECT_0。; 参数dwMilliseconds有两个具有特殊意义的值:0和INFINITE。若为0,则该函数立即返回;若为INFINITE,则线程一直被挂起,直到hHandle所指向的对象变为有信号状态时为止。; CEvent::ResetEvent( )把对象设置为无信号状态,程序在WaitForSingleObject(hHandle,INFINITE)处等待。
CEvent::SetEvent( )把对象设置为有信号状态,释放等待的线程。
如果CEvent对象为自动事件,则当WaitForSingleObject(hHandle,INFINITE)返回时,自动把CEvent对象重置为无信号状态。; B线程在执行到CEvent类成员函数Lock( )时将会发生阻塞,而A线程此时则可以在没有B线程干扰的情况下对共享资源进行处理,并在处理完成后通过成员函数SetEvent( )向B发出事件,使其被释放,得以对A先前已处理完毕的共享资源进行操作。 ;16.5.2 临界区;16.5.2 临界区;16.5.2 临界区;1
您可能关注的文档
最近下载
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.pdf VIP
- 2025商用车发动机气缸体铸件技术条件.docx VIP
- 颅内复杂动脉瘤介入治疗围术期护理专家共识2025 .pdf
- 第二节病虫害预测预报教学教材.ppt VIP
- 电梯新检规施工自检报告-曳引客货-2024.doc
- 2025年高考英语(新高考Ⅱ卷)试卷评析及2026高考备考策略 课件.pptx
- 2000年全国高中学生化学竞赛决赛(冬令营)理论试题与实验试题及参考答案精品.pdf VIP
- 苹果公司知识产权保护策略.pptx
- 中药饮片智能调剂与煎煮关键技术研究课件.pdf VIP
- 局部解剖学(山东联盟) 智慧树 知到答案.docx VIP
文档评论(0)