在线等待,c++ buidler通讯程序的异步问题

cansanta 2005-04-29 10:39:31
我的程序当中有一个主线程,创建一个接收数据线程,一个处理数据线程。接收线程用的是windows sdk socket 通讯,接收客户端发送的数据。处理线程处理接收线程接收到的数据,每处理一个包所花的时间较长。而接收线程接收到的数据,数据量比较大,要求接收到得数据在一定的时间内不能丢失。当有数据接收的时候,就接收数据,没有数据时,就去处理数据。接收到的数据用内存池缓冲。处理线程从内存池中取数据。请问我这两个线程之间怎么控制,才能达到当有数据接收的时候,就接收数据,没有数据时,就去处理数据。
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2005-05-08
  • 打赏
  • 举报
回复
用TCriticalSection控制好两个线程的同步,应该就没问题了,可以参考。http://www.csdn.com.cn/program/6340.htm
j888888 2005-04-29
  • 打赏
  • 举报
回复
怎么回丢失?保存起来,两个线程互相不影响,只是数据的交换!
cansanta 2005-04-29
  • 打赏
  • 举报
回复
非常感谢你的回答。
我现在已经是按照你说的去做了。并且设置接收线程的优先级比较高。因为处理线程处理数据比较花时间,假如在处理的时候,有3数据包到达怎么办,那么前两个数据包就应该会丢失吧。
lidawen 2005-04-29
  • 打赏
  • 举报
回复
接收数据线程,只管接受數據就行了,收到后往內存中寫(內存預先開大些),寫后可以馬上去收.
处理数据线程,從內存的尾部取數據,處理完一個數據后,又去處理下個數據.

注意:寫數據或讀數據的時候要對內存進行保護(鎖).
這樣應該不會有問題.

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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