【发布时间】:2014-01-18 23:22:32
【问题描述】:
我有 C# 多线程程序,它通过 c++ COM 对象使用 UART。我正在从几个线程访问 UART,但声音不大。 亩解决方案:
- 仅从一个线程访问 UART 并在每个周期开始时执行所有其他线程请求。这个解决方案的问题是所有其他线程在收到响应之前都会等待很长时间。
- 创建只有他才能访问 UART 的优先线程。这个解决方案的问题是它非常危险。 什么解决方案是最好的,为什么?还有其他解决方案吗?
【问题讨论】:
-
您为什么认为选项 2“有风险”?有什么特别的原因(因为它似乎比选项 1 更安全/更容易理解,其中线程似乎也在做一些其他不相关的工作)?
-
这是有风险的,因为需要更改所有现有产品,并且在用户升级后可能会导致错误。
-
你确定1真的有问题吗?您是否实际测量过是否确实“在收到响应之前有很多时间”并且该时间不是归因于设备/UART 的缓慢?
-
是的,我敢肯定,因为线程 1 中的每个循环都可能需要第二个甚至更多时间。
标签: c# .net multithreading uart