非阻塞单线程的通讯程序能改为多线程的吗?

CppFile 2007-01-25 09:07:08
我有一个dll,里面有一个导出类,处理所有的网络通讯问题,然后通过事件把接收到的没有错误的数据传给主程序,大概的逻辑程序是这样的
onread

读取数据包
验证数据包
把没有错误的数据包通过事件发送给主程序

--------------
这个是单线程的非阻塞实现的,现在有一个问题:当onread中处理很频繁的时候,主程序的相应非常不好,并且还有接受缓冲区满的情况,那么我可以不可以改造以下这样的:
onread:
读取数据包
验证数据包
把没有错误的数据包发送给一个队列

新开一个线程thread:
读取队列中的数据
把没有错误的数据包通过事件发送给主程序


------------------
这样程序就变成了多线程的,请问这样能达到我要的效果吗?





...全文
320 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sbkopoky 2007-02-17
  • 打赏
  • 举报
回复
有一个香港和悦网络电话的源文件 ,有兴趣妨进入我的BLOG看看
jinhaiwu 2007-01-28
  • 打赏
  • 举报
回复
主线程之负责接收和记录当前状态,那剩下的事情都交给子线程来做就可以缓解主线程的压力了。
「已注销」 2007-01-28
  • 打赏
  • 举报
回复
关注...
pp616 2007-01-26
  • 打赏
  • 举报
回复
非阻塞 windows提供了多种IO模型。楼主可以看看相关的资料。
CppFile 2007-01-25
  • 打赏
  • 举报
回复
可以缓解主程序的响应情况。
但收包太快时,队列会满,这时要考虑丢包策略,或者改变传输速度。
------------------------------------------------------------
非阻塞能在线程中给主程序发送事件吗/
ouyh12345 2007-01-25
  • 打赏
  • 举报
回复
可以缓解主程序的响应情况。
但收包太快时,队列会满,这时要考虑丢包策略,或者改变传输速度。

1,317

社区成员

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

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