- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(2) 在程序进程的主线程中调用 AfxBeginThread(MyCalcFunc,ss); 一旦调用了此函数,线程就被创建,并开始执行线程函数。当数据的计算完成时,函数将停止运行,相应的线程也随即终止。 4.创建工作线程的一般模式 : (1) 构建工作线程控制函数的框架 UINT MyThreadProc(LPVOID PPARAM) { CMyObject * pObject = (CMyObject *) pParam; // 传递参数 if(pObject == NULL ||!pObject-IsKindOf(RUNTIME_CLASS(CMyObject))) return 1; ...... return 0; } (2) 在程序的另一个函数中插入相关代码 ...... pNewObject = new CMyObject; AfxBeginThread(MyThreadProc, pNewObject); 查找N(很大)以内的素数,N的取值很大(比如:10000等),并在主界面实时动态显示处理结果,并显示处理进度等。 从CWinThread类派生出自己的线程类 改造自己的线程类 改造.h头文件(用宏DECLARE_DYNCREATE对该类进行声明) 改造.CPP实现文件(用宏IMPLEMENT_DYNCREATE对该类进行实现) 重载基类(CWinThread类)的某些成员函数 改造自己的线程类 创建新的用户界面窗口类,如窗口、对话框,并添加所需要的用户界面控件,然后建立新建的线程类与这些用户界面窗口类之间的联系。 利用类向导,为新建的线程类添加控件成员变量,添加响应消息的成员函数,为它们编写实现的代码。 经过以上步骤的改造,用户的线程类已经具备了完成用户任务的能力. 创建并启动用户界面线程 要创建并启动用户界面线程,可以使用MFC提供的AfxBeginThread( )函数的另一个版本,其调用格式是: CWinThread * AfxBeginThread( CRuntimeClass * pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTTRIBUTES lpSecurityAttrs = NULL ); 正常终止线程 提前终止线程 先从CWinThread类派生一个类,然后调用AfxBeginThead()创建CWinThread派生类的对象进行初始化,启动线程运行。该实例主要演示文件的移动,并显示操作的进度。 设计到两个线程:文件的读写采用工作线程,进度显示采用用户界面线程。 在程序中,应重点注意,如何编写线程的控制函数,如何创建一个新的线程,线程如何传递参数和取回结果。 select模型 WSAAsyncSelect异步I/O模型 WSAEventSelect事件选择模型 select( )函数 select( )函数原型如下,其中,fd_set数据类型代表着一系列特定套接字的集合。 int select( int nfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, const struct timeval * timeout ); timeval结构的定义是: struct timeval{ long tv_sec; // 以秒为单位指定等待时间 long tv_usec; // 以毫秒为单位指定等待时间 }; 操作套接字集合的宏 Winsock提供了下列宏操作,专门对fd_set数据类型进行操作 FD_CLR(s, *set) FD_ISSET(s, *set) FD_SET(s, *set) FD_ZERO(*set) select模型的操作步骤 使用FD_ZERO宏,初始化自己感兴趣的每一个fd_set集合。 使用FD_SET宏,将要检查的套接字句柄添加到自己感兴趣的每个fd_set集合中。 调用select( )函数,然后等待。 根据select( )的返回值,便可判断出哪些套接字存在着尚未完成(待决)的I/O操作。 对相应的套接字的I/O进行处理,然后返回步骤(1),继续进行select处理。 从网络上接受数据写入一个文件中。 从网络上接受数据写入一个文件中。 异步I/O模型通过调用WSAAsyncSelect( )函数实
您可能关注的文档
- 呼吸道对空气处理(好).ppt
- 呼吸道细菌与肺炎指南.ppt
- 呼吸复习题1与答案解析.doc
- 呼吸观察及护理.ppt
- 呼吸机常见问题与处理.ppt
- 呼吸困难和上下气道鉴别.ppt
- 呼吸困难和血气分析--王仲.ppt
- 呼吸困难急救知识.ppt
- 呼吸困难院前急救.ppt
- 呼吸困难诊断和治疗.doc
- 2024年湖南省株洲市初中中考模拟数学信息卷(一).docx
- 浙江省宁波市南三县2024年中考一模科学试卷.docx
- 彩妆行业新媒体营销互联网平台种草平台营销通案【互联网】【通案】.pptx
- 保健品保健食品养生行业养生滋补品牌新媒体营销推广策划方案【养生保健】【保健品推广】.pptx
- 保健品保健食品行业新媒体营销互联网平台种草平台营销通案【互联网】【通案】.pptx
- 美妆产品高档护肤品牌美容产品新品上市季度种草传播方案【美妆护肤】【敏感肌护肤】【种草营销】【KOL Brief】.pdf
- 保险赛道金融机构保险行业新媒体营销小红书营销通案【互联网】【通案】.pptx
- 地产项目商业街住宅地产国庆节日品牌营销运动赛事活动策划方案【国庆活动】.pptx
- 地产项目商业街商业综合体舌尖上的西游国庆市集游园策划案【美食市集】.pptx
- 地产项目商业街国庆十一暖场活动策划案【秋季活动】.pptx
文档评论(0)