char buf[4096];
m_Socketcp.receve(buf,4096,pMgr->m_Socketcp.CLINET_SOCK[0]);
接收到后存放在buf中的数据未传给处理线程,就又收到了新的消息,将上一消息覆盖
m_Socketcp.receve(buf,4096,pMgr->m_Socketcp.CLINET_SOCK[0]);
接收到后存放在buf中的数据未传给处理线程,就又收到了新的消息,将上一消息覆盖
解决方案 »
- (2013&2012Windows编程+网络编程)360、腾讯、迅雷面试题及答案,求讨论
- 在研究FTP客户端代码,有些不理解
- MSSQL如何发送windows消息
- 求助:求视频镜头检测源码
- 高手:CSpinButton实现浮点型数的增加或减小时,为什么对手工输入数不能完成。。。。。。
- MFC里类的instance象一个后台老板,而看得见的窗口,控件...象一个傀儡??
- 关于组件的包容和聚合,什么时候该使用包容什么时候该使用聚合啊?
- 为什么我的局域网不可用?
- 请问谁有ibm的dos下的socket库?
- 请教,如何用程序启动一个拨号连接?
- 我想问下,用mfc,你们一般会用到几多个涵数的?
- 5.1还请各位帮忙!有关vc和自定义的模板类问题!
应该考虑线程互斥问题,就可以了,两个线程不能同时对buf读写操作
出现了我刚才说的问题,有些数据接收了处理不了
我想过用缓冲,但对于包的解析不知道怎么做?
你有相关的例子吗?
为什么解析,你收到的不就是数据吗?建议多缓冲,两个buf,一个满了马上处理,顺便用事件通知程序填充第二个buf。
如果你只是简单的处理建议不要这么做,麻烦。队列的话,可以收到一个包,不要处理,放入队列,随后又去继续接受包,用另外一个线程来专门处理队列,类似于驱动的延时过程调用DPC方式。
配置不同添写的时间就不同
添大了影响效率
你只有一种数据类型,而且是已知的,我认为自己写个CQueue类效率要
比MS的CQueue类效率高很多,
我的想法是
用循环队列来实现,有X个数据包的缓冲的大小,接收/发送方用到数据时会将队列的那个节点加锁,以现实互斥.
你说的当然没有错,但是我宁愿多个线程去竞争一个简单的连接队列,而不是去竞争一堆BUFFER的队列。
挺简单的啊,一个共享互斥缓冲队列,一个线程接受数据并存入,另外一个线程读出数据并处理
========================================================================
这样有一个问题:
你建立一个共享的互斥缓冲队列,一个线程接收数据并存入,另外一个线程读出数据并处理。
这么一来,你就必须锁定共享资源:互斥的缓冲队列,你锁定时如果锁定单个待操作的的队列节点,显然是不行的,你必须锁定整个共享的户出缓冲队列,这样带来的系统开销是不是太大了哪?