防止设备通信出现瓶颈

问题描述 投票:1回答:1

我有一个很抽象的问题。我正在开发一个需要不断进行设备通信的项目。我正在将多个设备集成到带有触摸屏的外部处理单元上,以执行某些方法。即触摸屏上的“启动视频通话”按钮可激活继电器,打开显示设备,摄像设备和麦克风设备等。

另一方面,我也试图监控这些设备。他们目前的状态如何?它们是启用/禁用的吗?显示设备当前有什么输入?

到目前为止,我已经提出了两个解决方案,以防止沟通中的瓶颈,我不断轮询(即每两到五秒钟保持一个精确和最新的状态)通态和输入 - 显示设备的状态。

  1. 利用线程,我可以将不同的命令排入队列并执行它们异步。通过同时读取响应异步,所有通信都应该很好地隔开,但我有一个非常“忙”的通信线路,这会对处理单元产生影响。
  2. 在事件的帮助下,显示设备通知处理器它的状态发生了变化。这会对通信线路造成很大的压力,但我觉得这很容易被打乱。如果设备没有正确地抛出事件(或事件被遗漏),则监视状态与实际状态不对应。

我很好奇是否有其他方法可以解决这个问题。截至目前,我倾向于第二个,因为它强调处理单元少了很多,我只是觉得我应该建立许多保护措施,以防止实际设备状态的真实表示。

该项目在.Net 3.5上的C#中运行。

c# .net multithreading performance
1个回答
1
投票

轮询工作,但它不是有趣或最佳。反应性是最好的,但正如你所提到的那样,可能会有一个打嗝,确保你仍在听设备,而不仅仅是袖手旁观。在这种情况下,它自从优化两个过程。当你等待或者没有听到这么长时间的回应时进行轮询,并在你的民意调查返回良好信息时通过民意调查。

也就是说,你不应该担心在各种线程上轮询对单位征税太多。这听起来像一个目的设备,所以只要你没有运行它或一直强调它最大,那么使用你的资源是完全正常的。

© www.soinside.com 2019 - 2024. All rights reserved.