- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个线程也需要占用一定的系统资源, 线程是进程中相对独立的执行单位,也是Win32操作系统中可调度的最小的执行单位。 多个进程中的多个线程并发地执行。 对于拥有多个处理机的计算机系统,调度程序可以将不同的线程安排到不同的处理机上去运行,一方面平衡了CPU的负载,另一方面也提高了系统的运行效率。 当某个线程的代码都执行完毕时,该线程会自动终止;当一个线程终止时,会将它所占用的资源释放给进程。 * 6.2.3 多线程机制在网络编程中的应用 如果一个应用程序,有多个任务需要同时进行处理,那就最适合使用多线程机制。 对于网络上客户机软件,采用多线程的编程技术,能克服在单线程的编程模式下,由于阻塞等待而产生的客户程序就不能及时响应用户的操作命令的问题。 对于网络上服务器软件,采用多线程的编程技术,能更好地为多个客户服务。 即便是对于一个客户,采用多线程机制也能大大提高应用程序的运行效率。比如大家熟悉的东方快车、网络蚂蚁等文件下载软件,就采用了多线程机制,用多个线程同时下载一个文件的不同部分,大大加快了下载速度。 总之,多线程机制在网络编程中是大有作为的。 * 6.3 Visual C++6.0对多线程网络编程的支持 Visual C++6.0为程序员提供了Windows应用程序的集成开发环境,在这个环境下,有两种开发程序的方法。既可以直接使用Win32 API来编写C风格的Win32应用程序,也可以利用MFC基础类库编写C++风格的应用程序。 在这两种Windows应用程序的开发方式下,多线程的编程原理是一致的。 * 6.3.1 MFC支持的两种线程 微软的基础类库MFC提供了对于多线程应用程序的支持。在MFC中,线程分为两种, 一种是用户接口线程(user-interface thread),或称用户界面线程; 另一种是工作线程(the worker thread),这两类线程可以满足不同任务的处理需求。 * 1.用户接口线程 用户接口线程通常用来处理用户输入产生的消息和事件,并独立地响应正在应用程序其它部分执行的线程们产生的消息和事件,MFC特别地为用户接口线程提供了一个消息泵(a message pump)。用户接口线程包含一个消息处理的循环,以应对各种事件。 在MFC应用程序中,所有的线程都是由CWinThread对象来表示的。CWinThread类(可以理解为C++的Windows 线程类)是用户接口线程的基类,CWinApp就是从CWinThread类派生出来的,我们在编写用户接口线程的时候,也需要从CWinThread类派生出自己的线程类,借助ClassWizard可以很容易地做这项工作。 * 2.工作线程 工作线程(the worker thread),适用于处理那些不要求用户输入并且比较消耗时间的其他任务。对用户来说,工作线程运行在后台。这就使得工作线程特别适合去等待一个事件的发生。 CWinThread类同样是工作线程的基类,同样是由CWinThread对象来表示的。但在编写工作线程的时候,你甚至不必刻意地从CWinThread类派生出自己的线程类对象。你可以调用MFC框架的AfxBeginThread帮助函数,它会为你创建CWinThread对象。 * 第7章 Winsock的输入/输出模型 第6章已经提到,WinSock在进行输入输出的时候,可以采用阻塞模式或非阻塞模式。使用非阻塞套接字,带有I/O操作的随机性,使非阻塞套接字难于操作,给编程带来困难。为解决这个问题,对于非阻塞的套接字工作模式,进一步引入了五种“套接字I/O模型”,它们有助于应用程序通过一种异步方式,同时对一个或多个套接字上进行的通信加以管理。 * 这些模型包括: · select(选择) · WSAAsyncSelect(异步选择) · WSAEventSelect(事件选择) · Overlapped I/O(重叠式I/O) · Completion port(完成端口) 不同的Windows平台支持不同的I/O模型。如表7.1所示: * 表7.1 操作系统对套接字I/O模型的支持情况 平台 选择 异步选择 事件选择 重叠式I/O 完成端口 Windows CE 支持 不支持 不支持 不支持 不支持 Windows 95 (WinSock1) 支持 支持 不支持 不支持 不支持 Windows 95 (WinSock2) 支持 支持 支持 支持 不支持 Windows 98 支持 支持 支持 支持 不支持 Windows NT 支持 支持 支持 支持 支持 Windows 2000 支持 支持 支持 支持 支持
文档评论(0)