网站大量收购独家精品文档,联系QQ:2885784924

C++课件_第16章_多鹊奈务与多线程编程.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档