C++ 前端设备的数据采集

^8^ 2014-07-14 09:39:48
请问:
前端有1000台主控器(tcp/ip,每台主控器下连着这几百个感知器),作为上位机软件要去轮询每台主控器,实时的获取感知器的状态,如果按普通的模式轮询的话,实时性很差。
针对这种情况,有类似项目经验讲讲,有什么好的策略。比如开10个线程,每个线程负责100个控制器,是否实时性增强。
...全文
262 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglovec 2014-07-22
  • 打赏
  • 举报
回复
引用 4 楼 luckytwo667 的回复:
[quote=引用 1 楼 wanglovec 的回复:] 反其道而行之,让它主动向你送数据。另 为什么说 轮询就慢 ? 决定你速度的是CPU 和网速 以及你的代码是否能发挥它们的性能
其实这里说的实时性差,是个相对的概念。这里是讲的策略。比如单线程在 轮询第一台设备的时候 ,第1000台设备下感知器件报警(有毒气体侦测报警),那要轮询完前面的999个设备,等你获取到第1000台设备某感知器件状态时,由于中间等待时间长(XX秒)事故已经发生了。那么这样的设计失去意义了。 当然一方面取决于硬件上的设计,那如果单纯从软件上出发,是否有好的策略。[/quote] >> 你的策略是 让每个都得到均衡的服务,无论是第一个还是最后一个。 当然多个线程 肯定比单个好的多。 除了多线程 其它的我暂时想不到
^8^ 2014-07-15
  • 打赏
  • 举报
回复
引用 1 楼 wanglovec 的回复:
反其道而行之,让它主动向你送数据。另 为什么说 轮询就慢 ? 决定你速度的是CPU 和网速 以及你的代码是否能发挥它们的性能
其实这里说的实时性差,是个相对的概念。这里是讲的策略。比如单线程在 轮询第一台设备的时候 ,第1000台设备下感知器件报警(有毒气体侦测报警),那要轮询完前面的999个设备,等你获取到第1000台设备某感知器件状态时,由于中间等待时间长(XX秒)事故已经发生了。那么这样的设计失去意义了。 当然一方面取决于硬件上的设计,那如果单纯从软件上出发,是否有好的策略。
还在查 2014-07-14
  • 打赏
  • 举报
回复
首先如果用多线程轮询的话,返回的数据你必须要知道这是第几台的数据,不然就算再快有什么用。所以如果下位机的协议没有这方面的东西,还是老老实实的单线程轮询(一问一答)吧,不然就是改协议,多线程肯定要快很多,一般开CPU*2+2个数的线程池,然后循环1000个主机,如果有线程空闲就让它去干活
wanglovec 2014-07-14
  • 打赏
  • 举报
回复
如果你多个CPU 开多个线程 当然好
wanglovec 2014-07-14
  • 打赏
  • 举报
回复
反其道而行之,让它主动向你送数据。另 为什么说 轮询就慢 ? 决定你速度的是CPU 和网速 以及你的代码是否能发挥它们的性能

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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