• 3155阅读
  • 1回复

[讨论]主线程太卡导致网络消息堆积了怎么办…… [复制链接]

上一主题 下一主题
离线ninsun
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-14
使用了ZeroMQ作为网络传输底层库,然后第一次的发现了其中一个重要特性的弊端:不会丢包。
因为是三维程序,在机器性能不好的情况下只有1帧左右……换言之,主线程(渲染画面的线程)每秒只能运行1次左右的循环,于是接受网络数据的线程基本就没机会执行了……此时程序的CPU占用是50%……(基本也就是双核处理器单进程的上限了?)
于是在这个时候,接收数据速度过于缓慢(发送:5条/秒,接受:1条/秒……),由于不会丢包的特性,导致发送过来的数据包开始堆积……
也许和Qt没有直接关系吧(除了我使用Qt把ZeroMQ给封装了)……不过好歹也发来这里看看有什么解决方法……难道要从ZeroMQ那里入手吗……
离线ffii4455

只看该作者 1楼 发表于: 2013-04-15
堆积在那个库自己的缓冲区里?既然你的主线程太慢,那么你的网络线程直接把库里多余的数据拿出来扔了就可以了吧
快速回复
限100 字节
 
上一个 下一个