CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

CSoecket::OnReceive 接收在主线程,有什么办法移到辅线程接收

楼主test2002(test2002)2005-11-21 15:55:41 在 VC/MFC / 网络编程 提问

CSoecket::OnReceive   接收在主线程,  
  如果多个数据量大的socket,势必阻塞主线程,  
   
  有什么办法将csocket移到多个辅线程接收数据 问题点数:20、回复次数:12Top

1 楼test2002(test2002)回复于 2005-11-21 17:38:58 得分 0

难道高手如云的csdn没人会?Top

2 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-11-21 17:45:28 得分 5

数据量大的socket等,可以考虑异步IOTop

3 楼test2002(test2002)回复于 2005-11-21 17:47:00 得分 0

难道就不能用CSocket阻塞方式吗Top

4 楼test2002(test2002)回复于 2005-11-21 17:51:57 得分 0

如果不行,我觉得CSocket没有存在的必要了。  
   
  肯定会有的,希望大家继续探讨。Top

5 楼somexing(somexing)回复于 2005-11-21 17:53:14 得分 5

CSocket似乎就是封装了select吧  
   
  需要一个窗口接收FD_READ等,  
   
  可以将数据接收后投递到辅助线程处理Top

6 楼test2002(test2002)回复于 2005-11-21 17:53:16 得分 0

我觉得用PostThreadMessage会不错的效果,把主线程工作移到辅线程。Top

7 楼test2002(test2002)回复于 2005-11-21 17:56:58 得分 0

CSocket似乎就是封装了select吧  
   
  需要一个窗口接收FD_READ等,  
   
  可以将数据接收后投递到辅助线程处理  
   
  -------------------------------------》  
  应该这样吧,主线程只负责收消息,  
  并将消息投递到辅助线程吧。  
  由辅线程收吧,由主线程接收的话,那不是要阻塞主线程其他消息吗Top

8 楼BBirdlyh(BBird)回复于 2005-11-21 19:01:24 得分 5

不能post,速度的瓶径是在数据接受的过程上,不是在数据处理上,recv调用完后数据都接受下来了,还post干吗,CSocket的好处是在简单SOCKET处理和他与FILE的结合上,如简单的文字聊天程序.象这样的问题没必要非用CSOCKETTop

9 楼test2002(test2002)回复于 2005-11-22 08:34:30 得分 0

不能post,速度的瓶径是在数据接受的过程上,不是在数据处理上,recv调用完后数据都接受下来了,还post干吗,CSocket的好处是在简单SOCKET处理和他与FILE的结合上,如简单的文字聊天程序.象这样的问题没必要非用CSOCKET  
   
  --------------------------------------------------------  
  你理解错了,是在辅助线程调用recv接收,而主线程中有OnReceive消息,并将这个消息告诉辅助线程,用辅助线程接收的。  
   
   
  我已经测试成功了!!  
   
  现在我已经想不出为什么要用完成端口了。  
   
  我现在可以用CSocket+CWinThread轻松完成超多socket高速接收、发送的问题。  
  Top

10 楼test2002(test2002)回复于 2005-11-22 08:38:16 得分 0

看来csdn高手如云原来这样,这样小小问题也没搞出所以然Top

11 楼BBirdlyh(BBird)回复于 2005-11-22 19:19:07 得分 5

是啊,你还是用了线程吗,用了线程就等于用了异步,问题本来就可以这么解决的啊.但是话说回来了要是发送数据的时候呢,CSOCKET发送数据的时候不会通知ONSEND的不信你试试Top

12 楼test2002(test2002)回复于 2005-11-23 15:08:03 得分 0

是啊,你还是用了线程吗,用了线程就等于用了异步,问题本来就可以这么解决的啊.但是话说回来了要是发送数据的时候呢,CSOCKET发送数据的时候不会通知ONSEND的不信你试试  
  -----------------------------------------------  
   
  不用试了,肯定没有,但我把pSocket->Send   ,放在了线程执行,这个时候,就是在发送数据时候,也没有阻塞主线程了。Top

相关问题

  • 请问怎样从主线程中获知各辅线程都已结束。
  • 主线程外加两个辅线程的程序的退出问题!!
  • 怎么在辅线程里面接收Socket的发过来的消息?
  • 请教:关于在辅线程中创建一个无模式对话框的问题(MFC) ---似乎很难
  • GUI主线程waitforsingleobject的问题?
  • 主线程不能等待吗?
  • 为何向主线程发送一条消息,主线程却没有响应。
  • java 线程,对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了
  • 在主线程中关副线程,为什么ExitThread(dwThreadID)会把主线程也关闭?
  • 我想在一个辅线程用postmessage发出一个自定义的消息给主窗口,该怎样定义这个消息

关键词

  • 线程
  • 数据
  • 消息
  • socket
  • 程接收
  • 辅线
  • 接收
  • 主线程
  • csocket
  • onreceive

得分解答快速导航

  • 帖主:test2002
  • oyljerry
  • somexing
  • BBirdlyh
  • BBirdlyh

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo