WinSock的多线程编程71WinSock为什么需要多线程编程72.PPT

WinSock的多线程编程71WinSock为什么需要多线程编程72.PPT

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

(4)函数返回一个指向新生成的CWinThread对象的指针,可以把它保存在一个变量中,其它线程就可以利用这个指针来访问该线程类的成员变量或成员函数。 系统自动地为每一个线程创建一个消息队列(a message queue),如果线程创建了一个或多个窗口,就必须提供一个消息循环(a message loop),这个消息循环从线程的消息队列中获取消息,并把它们发送到相应的windows 过程(window procedures)。 7.3.3 创建并启动用户界面线程 因为系统将消息导向独立的应用程序窗口,所以,在开始线程的消息循环之前,线程必须至少创建一个窗口,大多数基于Win32的应用程序包含一个单一的线程,该线程创建了若干窗口。一个典型的应用为它的主窗口注册了窗口类,创建并显示这个主窗口,并且启动它的消息循环,所有这一切都在WinMain函数中。 7.3.3 创建并启动用户界面线程 1.正常终止线程 P198 一个工作线程,当控制函数的所有指令都执行完毕而返回时,线程也将终止,此线程的生命周期就结束了。 工作线程执行完毕时退出控制函数,并返回一个表示终止原因的值。 7.3.4 终止线程 P198 2.提前终止线程 P199 要想在线程尚未完成时提前终止,只需从线程内部调用AfxEndThread函数,就可强迫线程 终止。函数的调用格式: Void AfxEndThread( UINT nExitCode ); 7.3.4 终止线程 3.终止线程的另一种方法 P199 使用Win32 API提供的Terminate Thread( )函数,也可以终止一个正在运行的函数,但是它产生的后果不可预料,一般仅仅用来终止死线程,而不做任何内存的清除工作。 7.3.4 终止线程 4.获取线程的终止代码 P199 当线程正常终止或提前终止,指定的终止代码会被应用程序的其它线程使用。要获得线程的终止代码,只需调用GetExitCodeThread( )即可。 函数的调用格式: BOOL GetExitCodeThread ( HANDLE hThread , LPDWORD lpExitCode ); 7.3.4 终止线程 5.关于设置线程的优先级问题 P200 SetThreadPriority函数设置指定线程优先级的值。线程的优先级与线程所在进程的优先级共同决定线程的基本优先级。函数的调用格式为: BOOL SetThreadPriority( HANDLE hThread; int nPriority ); 7.3.4 终止线程 7.4.1 编写线程函数 P200 1.用于查询的线程函数 2.用于下载的线程函数 3.用于上传的线程函数 7.4.2 添加事件处理函数 P206 1.添加包含语句 2.修改原按钮控件的事件处理函数 7.4 多线程FTP客户端实例 P200 * 第7章 WinSock的多线程编程 7.1 WinSock为什么需要多线程编程 7.2 Win32操作系统下的多进程多线程机制 7.3 VC++对多线程网络编程的支持 7.4 多线程FTP客户端实例 * 本章首先说明WinSock需要多线程编程的原因, 然后说明Win32操作系统下的多进程多线程机制、多线程机制在网络编程中的应用和Visual C++6.0对多线程网络编程的支持, 进而分析了MFC支持的两种线程,给出了创建MFC的工作线程、创建并启动用户界面线程和终止线程的步骤。 第7章 WinSock的多线程编程 7.1.1 WinSock的两种I/O模式 P188 如前所述,WinSock在进行输入输出的时候,可以使用两种工作模式。即“阻塞”模式(Blocking Mode)或“非阻塞”模式,又称为同步模式或异步模式。工作在“阻塞”模式的套接字称为阻塞套接字,工作在“非阻塞”模式下的套接字称为非阻塞套接字。 7.1 WinSock为什么需要多线程编程 P188 “阻塞”与“非阻塞”模式各有其优点和缺点。 阻塞套接字的I/O操作工作情况比较确定,无非是调用、等待、返回。大部分情况下,I/O操作都能成功地完成,不过就是花费了等待的时间。因而比较容易使用,容易编程;但在应付诸如需要建立多个套接字连接来为多个客户服务的时候,或在数据的收发量不均匀的时候,或在输入输出的时间不确定的时候,却显得性能低下,甚至无能为力。 7.1.2 两种模式的优缺点及解决方法 P189 使用非阻塞套接字,需要编写更多的代码,因为必须恰当地把握调用I/O函数的时机,尽量减少无功而返的调用,还必须详加分析每个Winsock调用中收到的WSAEWOULDBLO

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档