网络程序的设计第六章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 Winsock的多线程编程;6.1.1 WinSock的两种输入输出模式 ;在大多数情况下,非阻塞模式调用都会失败,返回一个WSAEWOULDBLOCK错误,表示操作的条件尚不具备,但又不允许等待完成请求的操作。 非阻塞模式下会频繁返回错误,应仔细检查返回代码;并且在不成功的情况下 不应反复轮询.;6.1.2 两种模式的优缺点及解决方法 “阻塞”与“非阻塞”模式各有其优点和缺点。 阻塞套接字的I/O操作工作情况比较确定,无非是调用、等待、返回。大部分情况下,I/O操作都能成功地完成,不过就是花费了等??的时间 因而比较容易使用,容易编程; 但在应付诸如需要建立多个套接字连接来为多个客户服务的时候,或在数据的收发量不均匀的时候,或在输入输出的时间不确定的时候,却显得性能低下,甚至无能为力。 ;使用非阻塞套接字,需要编写更多的代码,因为必须恰当地把握调用I/O函数的时机,尽量减少无功而返的调用,还必须详加分析每个Winsock调用中收到的WSAEWOULDBLOCK错误,采取相应的对策。 这种I/O操作的随机性使得非阻塞套接字显得难于操作。 ?所以,我们必须采取一些适当的对策,克服这两种模式的缺点,让阻塞和非阻塞套接字能够满足各种场合的要求。 对于非阻塞的套接字工作模式,进一步引入了五种“套接字I/O模型”。 对于阻塞的套接字工作模式,则进一步引入了多线程机制。 ;6.2.1 Win32 OS是单用户多任务的操作系统 最早的DOS是单用户单任务的。 后来发展到图形界面的Windows,发展到Windows 95,Windows 98,就都支持多任务了。 从Windows NT起,Windows操作系统更是发展成了一个真正的抢占式多任务操作系统。 一个运行中的应用进程实例,就是一个进程。 一个基于Win32的应用程序可以包含一个或多个进程。 ;6.2.2 Win32 OS是支持多线程的操作系统 Win32操作系统还支持同一进程的多线程。在一个Windows进程内,可以包含多个线程。 一个线程(thread)是进程内的一条执行路径,具体地说,是一个应用程序中的一条可执行路径,往往是应用程序中的一个或多个函数。 一个进程中至少要有一个线程,习惯将它称为主线程。 任何一个应用程序进程都有一个主线程。一般C程序中的Main或WinMain函数就规定了主线程的执行代码。;6.2.2 Win32 OS是支持多线程的操作系统 当你启动了一个应用程序时,操作系统在为它创建了进程之后,也创建了该进程的主线程,并根据Main或WinMain函数的地址,开始执行该进程的主线程。 主线程可以创建并启动其他辅助线程。 由主线程创建的线程又可以创建并启动更多的线程。 线程的代码执行完毕时会自动终止,并将占用的资源释放给进程; 进程的所有线程都终止时,进程也就终止了,并会将占用的资源释放给操作系统。 ;一个线程需要占用一定的系统资源,一类是此线程专用的,另一类则是与进程的其他线程共享的。 线程是进程中相对独立的执行单位,也是Win32操作系统中可调度的最小的执行单位。 多个进程中的多个线程并发地执行。 对于拥有多个处理机的计算机系统,调度程序可以将不同的线程安排到不同的处理机上去运行,一方面平衡了CPU的负载,另一方面也提高了系统的运行效率。;6.2.3 多线程机制在网络编程中的应用 如果一个应用程序,有多个任务需要同时进行处理,那就最适合使用多线程机制。 对于网络上客户机软件,采用多线程的编程技术,能克服在单线程的编程模式下,由于阻塞等待而产生的客户程序就不能及时响应用户的操作命令的问题。 利用Windows系统的多线程机制可以很好的解决这个问题。 将用户界面的处理放在主线程中,将数据的I/O、费时的计算、网络访问等放在辅助线程里。 ;网络上服务器软件应采用多线程的编程技术。 能更好地为多个客户服务。 可以执行许多后台处理,如数据库访问、安全验证、日志记录、事物处理等。 客户机软件,采用多线程机制也能大大提高应用程序的运行效率。 如东方快车、网络蚂蚁等文件下载软件,就采用了多线程机制,用多个线程同时下载一个文件的不同部分,大大加快了下载速度。 总之,多线程机制在网络编程中是大有作为的。; VC++ 6.0为程序员提供了Windows应用程序的集成开发环境,在这个环境下,有两种开发程序的方法。既可以直接使用Win32 API来编写C风格的Win32应用程序,也可以利用MFC基础类库编写C++风格的应用程序。 在这两种Windows应用程序的开发方式下,多线程的编程原理是一致的。 ;6.3.1 MFC支持的两种线程 微软的基础类库MFC提供了对于多线程应用程序的支持。在MFC中,线

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档