多线程实现并发TCP服务器..ppt

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

|?2011LenovoLenovoConfidential多线程并发服务器知识点回顾1.多线程2.Socket1.多线程1.概念线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程。2.共享资源一个进程的所有线程共享进程的地址空间和全局变量3.函数int?pthread_create(pthread_t?*tidp,const?pthread_attr_t?*attr,(void*)(*start_rtn)(void*),void?*arg);编译链接参数 -pthread2.Socket建立TCP连接流程代码演示1TCP-简单收发本章知识点1.并发2.Linux下tcp并发服务器的几种设计模式3.阻塞?4.如何实现client和server实时收发数据5.如何实现TCPserver同时和多个客户端相连6.如何实现TCP多个客户端互相通信1.并发概念当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。这种方式我们称之为并发(Concurrent)。3.Linux下tcp并发服务器的几种设计模式多进程模式???accept返回成功时候,就为这一个连接fork一个进程,专门处理这个连接上的数据收发,等这个连接处理结束之后就结束这个进程。???优点:???????编程相对简单,不用考虑线程间的数据同步等。???缺点:???????资源消耗大。启动一个进程消耗相对比启动一个线程要消耗大很多,同时在处理很多的连接时候需要启动很多的进程多去处理,这时候对系统来说压力就会比较大。另外系统的进程数限制也需要考虑。???应用:???????在客户端数据不多的时候使用很方便,比如小于10个客户端。Linux下tcp并发服务器的几种设计的模式多线程模式???类似多进程方式,但是针对一个连接启动一个线程。???优点:???????相对多进程方式,会节约一些资源,会更加高效一些。???缺点:???????相对多进程方式,增加了编程的复杂度,因为需要考虑数据同步和锁保护。另外一个进程中不能启动太多的线程。在Linux系统下线程在系统内部其实就是进程,线程调度按照进程调度的方式去执行的。???应用:??????类似于多进程方式,适用于少量的客户端的时候。Linux下tcp并发服务器的几种设计的模式?select+多线程模式???有一个线程专门用于监听端口,accept返回之后就把这个描述符放入描述符集合fd中,一个线程用select去轮训描述符集合,在有数据的连接上接收数据,另外一个线程专门发送数据。当然也可以接收和发送用一个线程。描述符可以设置成非阻塞模式,也可以设置成阻塞模式。通常连接设置成非阻塞模式,发送线程独立出来。???优点:????????相对前几种模式,这种模式大大提高了并发量。???缺点:????????系统一般实现描述符集合是采用一个大数组,每次调用select的时候都会轮询这个描述符数组,当连接数很多的时候就会导致效率下降。连接数在1000以上时候效率会下降到不能接受。应用:????????目前windows和一般的Unix上的tcp并发都采用select方式,应该说应用还是很广泛的。Linux下tcp并发服务器的几种设计的模式?epoll方式????????在Linux2.6版本之后,增加了epoll。具体的使用是:一个线程专门进行端口监听,accept接收到连接的时候,把该连接设置成非阻塞模式,把epoll事件设置成边缘触发方式,加入到epoll管理。接收线程阻塞在epoll的等待事件函数。另外一个线程专门用于数据发送。???优点:???????由于epoll的实现方式先进,所以这种方式可以大规模的实现并发。我们现在的应用在一个3年前的dell的pcserver可以实现2万个连接的并发。???缺点:???????由于涉及了线程和非阻塞,所以会导致编码的复杂度增大一些。这种方式只适用于Linux2.6内核以后。????1。如果把epoll事件设置成水平触发效率就下降到类似采用select的水平。???????2。?Unix系统下有单个进程打开的描述符数目限制,还有系统内打开的描述符数目限制。系统内打开的描述符数目限制由软硬限制两个。硬限制是根

文档评论(0)

130****2013 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档