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

线程之间传递数据

楼主nicholas()2000-08-31 10:13:00 在 VC/MFC / 进程/线程/DLL 提问

在做一个网关时,有一个主线程接受请求,128个辅助线程,要求主线程把数据包处理后选择一个闲置辅助线程发送给服务端然后等待返回结果,请问怎么在线程之间传递数据比较好,我用的是MFC,为CThread的继承类申明了一个函数Passdata和一个成员变量m_MsgBuf,然后在主线程中调用passdata把数据包拷入m_MsgBuf中,请哪位大虾评价一下这种做法。谢谢! 问题点数:50、回复次数:4Top

1 楼Areslee(懒虫易水)回复于 2000-08-31 10:33:00 得分 20

这样应该是可以了,在同一进程间传递数据随便用什么方法都可以。Top

2 楼pbi()回复于 2000-08-31 10:40:00 得分 30

只要你解决了线程之间的同步问题,这样做是可以的。例如在辅助线程处理m_MsgBuf期间,别的线程不应该调用该对象的Passdata成员函数。如果你的数据拷贝量很大,也可以将数据块的指针传给辅助线程,避免拷贝的开销。其实这类程序的主要问题在于线程之间的同步,如主线程如何选择闲置的辅助线程,使用什么方法通知辅助线程,辅助线程处理完后怎样通知主线程等。Top

3 楼Holly()回复于 2000-08-31 10:53:00 得分 0

你应当尽量避免采用复制数据的方法!直接采用全局的数据缓冲池!Top

4 楼Holly()回复于 2000-08-31 11:16:00 得分 0

你有128个辅助线程,如果都采用复制数据的方法,即使数据量不大,最终的开销也是很大的,影响整体的效率!  
  控制的过程你需要许多同步的控制:  
  线程轮询访问数据缓冲池,设置访问标记,设置处理完毕标记,设置数据未正在填充标记!Top

相关问题

  • 怎么用消息在线程之间传递数据?
  • unix多线程数据传递问题
  • 多线程的数据传递问题。
  • 数据采集多线程的数据传递问题,谢谢大家。
  • 为什么CSocket不能在线程之间传递?还有哪些MFC类不能在线程之间传递?
  • 各位大虾帮忙。一个线程数据传递的问题。
  • 请问,在线程当中怎么传递消息或数据呀?
  • 线程传递给主窗体大量数据的问题,在线等。。。。
  • 多线程之间传递windows对象的问题
  • 线程之间的参数传递问题,急!!在线等!

关键词

  • 线程
  • 数据
  • 辅助
  • passdata
  • 传递
  • 主线程
  • msgbuf
  • 同步
  • 标记
  • 处理

得分解答快速导航

  • 帖主:nicholas
  • Areslee
  • pbi

相关链接

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

广告也精彩

反馈

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