- 1、本文档共54页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华北电力大学网络编程不同模式下的处理方法
(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( )函数实
您可能关注的文档
最近下载
- 智慧广场-简单的重叠问题(课件)-2024-2025学年一年级上册青岛版(五四学制)(2024).pptx VIP
- 大学教学课件:Reading-The Modern Flying Carpets and Wind-Fire Wheels-.pptx
- 第四章 课程标准、教学与评估之间的“对齐”.pptx
- 在线网课学习课堂《英语电影与文化》单元测试考核答案.docx
- 钢结构施工质量验收规范2013.docx
- 壹号土猪市场营销分析.doc VIP
- 2023-2024学年北京市海淀区七年级第一学期期末数学试卷(含答案).pdf
- 债权转让协议-中国长城资产管理股份有限公司.DOC
- 壹号土猪案例SWOT分析课件.pptx VIP
- 大学生创新创业计划书PPT完整版.pptx
文档评论(0)