查看文章 |
作为最知名的即时通讯软件,飞鸽传书可以说是历史悠久,用户极多。今天,看了看飞鸽传书的原创作者的网站,无意发现了他的源代码,有了源码,我们可以把它编译成任何语言的版本。 新版本做好之后,你就可以到朋友面前晒晒了,系统包括采用4IOCP。其中一个TCP IOCP用作管理员客户端连接,以及将来的服务器聚合扩展;一个飞鸽传书TCP IOCP用于用户客户端登陆登出,以及数据补包;一个UDP IOCP用于心跳、P2P打洞处理、中转聊天的文字消息(包含系统表情);一个UDP IOCP用于中转聊天的非文本数据(比如图像)。4个IOCP间的桥接及系统日志、管理员日志、用户日志、插件日志均采用队列处理。系统所有内存使用均有专门的内存管理器负责管理。至于UDP为什么也要采用IOCP,原因则是,虽然普通的UDP已经很快了,但是,每次发送,接收仍均需要阻塞等待。虽然每次阻塞的时间很短,但积少成多,在大量连接的情况下,仍然会比较可观。而采用飞鸽传书IOCP,则就是为了经量减小每次阻塞的时间。 个人觉得没必要使用那么多IOCP,其实这样子做的目的是逻辑上面更加清晰,线程更加专用化,第一个IOCP其实就对应着一个线程池,但是这样子可能存在的就是线程的利用率不高.对于内存池,个人觉得也没有必要太过专职化,应该是根据线程(最好是CPU核心)进行分离,从而减少线程之间的同步消耗,另一个更为重要的是为往后NUMA技术的应用. 如果你把线程都指定到相应的CPU核心上,而把在同一核心上的线程看做是一组,那么在同组之内的线程同一时间肯定就只有一个访问某一资源了... |

