请问同时接收到多个数据如何处理?

sy95122 2011-06-07 10:52:59
假设有1万个设备,通过串口或者网络发送数据向主机,如果1万个数据同时到达主机,是不是会产生并发,如何解决?

1、如果数据包都不大,比如都是1K,设置大的缓存能解决吗?但是串口通信中同时接收到会不会出现数据丢失?

2、如果数据包比较大,主机的存储空间有限,怎么处理呢?

3、是不是可以这样计算,10000/60/60/24 = 0.1157 也就是说1秒内同时发送的概率很小,不用考虑并发问题?

谢谢!!
...全文
230 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-06-08
  • 打赏
  • 举报
回复
道生一,一生二,二生三,三生万物。
AnYidan 2011-06-08
  • 打赏
  • 举报
回复
不同的协议对此有不同的定义

总线仲裁就是要决定谁的优先机高
zhanshen2891 2011-06-08
  • 打赏
  • 举报
回复 1
如果单单从通信上讲这个是需要处理的,你可能是有一个线程去不停的收报,而另一个线程去对收到的包去处理,比如排序,重组等。但是对我们写应用的程序来说没必要关心这个,就用现成的就好了,如果是需要按顺序并且不丢包就用TCP,不然就是UDP
bdmh 2011-06-08
  • 打赏
  • 举报
回复
看你是什么协议了,如果是udp,可能丢包,如果是tcp,应该不会,会排队的,当然服务器性能最好提升一些,把接受的信息先存到内存,不要同步接收和处理,后台开线程进行处理
naturemickey 2011-06-08
  • 打赏
  • 举报
回复 1
同时发送数据到主机,也得看是不是同一端口,每个端口一个队,这不会有什么问题的,即使是同时到达也会排队的。

数据丢失这个总是常有的事,无论你用什么协议,也无论什么情况,都会有丢失(大学时的网络课上老师会说TCP/IP三次握手比较安全,但这并不是决对不丢,到实际的生产环境上一样是丢)。要解决的话,要么通过复杂的校验和通信约定来适时地发送冗余数据,要么就做全局事物。关于这方面已经有一些现成的技术,比如:JMS,同时也有一些现成的产品,比如:WS-MQ、WS-MB等,不过这些产品是Java方面的,C/C++方面恕我见识短,还不知道有什么现成的东西,可能要自己实现。

主机存储空间有限的话,我只能想到增加存储(无论是增加本地硬盘,还是其它外部存储)这个办法,其它就想不出来了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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