非常诡异的问题。。。。征求大家的意见 都进来看看

yhlovehx 2009-04-22 04:13:55
我现在做了一个基于P2P从多个节点下载文件的程序
碰到这么个问题
我同时从不超过8个节点同时下载数据
非常正常。。。。从来不出问题。。
但是超过8个以后
总有个把节点 传送数据的时候突然失去响应(我怀疑是不是线程调度的问题)
下载的文件和原文件通过2进制比较。。。。和失去响应的节点个数相对应(如果是2个节点,就有2个位置和原文件不一样)

我接受数据的一方采用的是select UDP 线程池来处理接受到的数据

我现在真不知道咋整了 压根 就不好调试。。
希望哪位大大 提供点思路 或者说下自己的看法


...全文
109 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiyaman5 2009-04-28
  • 打赏
  • 举报
回复
帮顶
  • 打赏
  • 举报
回复
学习中
yinyuanqings 2009-04-26
  • 打赏
  • 举报
回复
好帖子,学习了
ggmfc 2009-04-24
  • 打赏
  • 举报
回复
学习学习!
yhlovehx 2009-04-23
  • 打赏
  • 举报
回复
恩 setsockopt设置下接受缓冲区就好了。。
真要命。。
闪破风浪 2009-04-23
  • 打赏
  • 举报
回复
超过缓冲了吧?
yearn520 2009-04-23
  • 打赏
  • 举报
回复
学习
surge0321 2009-04-23
  • 打赏
  • 举报
回复
学习中
yhlovehx 2009-04-23
  • 打赏
  • 举报
回复
-。-!!!我发现了。。
是 接受缓冲区的大小有问题。。。
我设置成的是512KB。。。因为每个连接一下发送64KB的数据。。
大概到8个的时候 系统接受缓冲区就满了。。
接下来的 就会丢了 -。-!!!
cnzdgs 2009-04-22
  • 打赏
  • 举报
回复
与线程个数有关,基本上可以认定是线程池的问题,你再检查看看,如果找不出问题,把相关代码贴出来。
ltps123 2009-04-22
  • 打赏
  • 举报
回复
不会有死锁吧
yhlovehx 2009-04-22
  • 打赏
  • 举报
回复
内存出错??应该会提示错误的吧
并且我还检查了 下载回来的文件内容
就是 传进线程的那段内容没有写进文件里面。。 其他的地方和原文件一模一样。。。
我就纳闷 总有个把线程好像不运行一样。。

yhlovehx 2009-04-22
  • 打赏
  • 举报
回复
何谓写日志
介绍下
rtdb 2009-04-22
  • 打赏
  • 举报
回复
超过8个后才出错?
看起来可能是内存越界?
yhlovehx 2009-04-22
  • 打赏
  • 举报
回复
失去响应是指 已经接受到数据 并且数据已经传给线程池中的某个线程 但是这个线程好像一直没有得到CPU时间。不运行的、、。
最诡异的是 只要不超过8个节点 无论网络情况多么恶劣 丢包多么严重 都能够处理好 不出问题
但是超过8个后 就这样了。。。
liuzxchina 2009-04-22
  • 打赏
  • 举报
回复
不好调试的程序,日志是最好的调试方法。
aa3000 2009-04-22
  • 打赏
  • 举报
回复
失去响应是指什么?或许线程池设计不好导致的。最好还是写日志。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧