Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161279
  • 博文数量: 171
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1990
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-05 10:49
文章分类

全部博文(171)

文章存档

2011年(9)

2010年(162)

我的朋友

分类: IT业界

2010-11-18 14:04:32

等待慢速设备干吗非要用来等?
开启另外的线程(可以用系统提供的线程池)来等待和处理不可以吗?

,一个和两个实际上没有太大的差别.只需要在相应的上下文结构当中加以标识,实际上共用一个还可以使得各线程压力相对均衡.

一般需要分成多个的时候,,通常是对于某些可能同步处理时间过长,并且大部分时间处于等待慢速设备的处理时,线程并不能为之提升性能,而造成一个瓶颈,此时就可以考虑把它分离到另外的队列当中,从而使之不对其它业务造成影响.

在硬件固定,且特殊情况下,的却如你所说,开一个和开两个是没有多大的区别,新规存在很大问题,或者说开两个可能还没有开一个性能高(因为CPU需要调度);但是现在就是在这个特殊情况下,你说就的不符合要求了,TCP可以方便的实现P2P吗?恐怕比较困难,如果说都是TCP连接,不需要打洞(因为TCP打洞不太容易),那开一个TCP IOCP绝对比开两个性能要好,因为CPU这个最重要的资源是固定的,就那么多,来分的人多了,那么每个人就少了,要想提高性能就得加CPU;那实现一个UDP IOCP呢,不是很好么?还要TCP IOCP干什么? 众所周知,UDP是不可靠协议,那么怎样来维护在线用户信息?心跳包或许可以,但是你要间隔多长时间发一次呢?服务器又是间隔多长时间检查一次呢?这中间就不会存在包全部丢掉的情况吗?所以这还得使用TCP+心跳包来检测.所以我觉得用一个TCP IOCP和一个UDP IOCP是最比较好的选择.



阅读(1321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~