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

【IT书籍】使用 C++ 和 MFC 进行多线程编程.docx

【IT书籍】使用 C++ 和 MFC 进行多线程编程.docx

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

使用 C++ 和 MFC 进行多线程编程Visual Studio 2005 javascript:;其他版本 /zh-cn/library/975t8ks0(v=VS.100).aspx/zh-cn/library/975t8ks0(v=VS.90).aspxMicrosoft 基础类 (MFC) 库提供多线程应用程序支持。本主题描述进程、线程和 MFC 多线程编程方法。进程是应用程序的执行实例。例如,双击“记事本”图标时,将启动运行“记事本”的进程。线程是进程内的执行路径。启动“记事本”时,操作系统创建进程并开始执行该进程的主线程。此线程终止时,进程也终止。启动代码以函数地址的形式将此主线程提供给操作系统。通常是所提供的 main 函数或 WinMain 函数的地址。如果愿意,可以在应用程序中创建其他线程。如果在处理后台任务或维护任务时不希望用户等待这些任务完成,则可能需要创建其他线程。MFC 应用程序中的所有线程都由 /zh-cn/library/48xz4yz9(v=vs.80).aspxCWinThread 对象表示。大多数情况下,甚至不必显式创建这些对象,而只需调用框架 Helper 函数 /zh-cn/library/s3w9x78e(v=vs.80).aspxAfxBeginThread,该函数将为您创建 CWinThread 对象。MFC 区分两种类型的线程:用户界面线程和辅助线程。用户界面线程通常用于处理用户输入及响应用户生成的事件和消息。辅助线程通常用于完成不需要用户输入的任务(如重新计算)。Win32 API 不区分线程类型;它只需要了解线程的起始地址以开始执行线程。MFC 为用户界面中的事件提供消息泵,从而对用户界面线程进行专门处理。CWinApp 是用户界面线程对象的一个示例,因为它从 CWinThread 派生并对用户生成的事件和消息进行处理。应特别注意以下情况:可能有不止一个线程需要访问同一对象。/zh-cn/library/h14y172e(v=vs.80).aspx多线程编程:编程提示 介绍了一些可以避免在这些情况下可能发生的问题的技术。/zh-cn/library/thdxkfx9(v=vs.80).aspx多线程编程:如何使用同步类说明如何使用可用的类从多个线程同步访问一个对象。编写和调试多线程编程本身是一项复杂棘手的任务,因为您必须确保一次只能有一个线程访问对象。多线程编程主题没有讲述多线程编程的基础知识,而只是说明了如何在多线程程序中使用 MFC。Visual C++ 中包含的多线程 MFC 示例阐释了几种多线程“添加功能”和 MFC 中未包含的 Win32 API,但只是一些入门知识。有关操作系统如何处理进程和线程的更多信息,请参见 Platform SDK 中的/zh-cn/library/ms684841(v=vs.80).aspx进程和线程。多线程处理:创建用户界面线程Visual Studio 2005 javascript:;其他版本 /zh-cn/library/b807sta6(v=VS.100).aspx/zh-cn/library/b807sta6(v=VS.90).aspx用户界面线程通常用于处理用户输入和响应用户事件,这些行为独立于执行该应用程序其他部分的线程。已经创建并启动主应用程序线程(在 CWinApp 导出的类中提供)。本文描述创建其他用户界面线程所需的步骤。创建用户界面线程时,必须首先从 /zh-cn/library/48xz4yz9(v=VS.80).aspxCWinThread 派生类。必须使用 /zh-cn/library/56302tyt(v=VS.80).aspxDECLARE_DYNCREATE 和 /zh-cn/library/5fsfk9dy(v=VS.80).aspxIMPLEMENT_DYNCREATE 宏声明并实现此类。此类必须重写某些函数,也可以重写其他函数。下表列出了这些函数及其用途。创建用户界面线程时要重写的函数函数 用途 /zh-cn/library/1afc1fkh(v=VS.80).aspxExitInstance 线程终止时执行清除。通常重写。/zh-cn/library/b5k7zxtw(v=VS.80).aspxInitInstance 执行线程实例初始化。必须重写。/zh-cn/library/1sa2f19f(v=VS.80).aspxOnIdle 执行线程特定的闲置时间处理。通常不重写。/zh-cn/library/67d74wsy(v=VS.80).aspxPreTranslateMessage 将消息调度到 TranslateMessage 和 DispatchMessage 之前对其进行筛选。通常不

文档评论(0)

专业好文档 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6110200002000000

1亿VIP精品文档

相关文档