在C#中重复触发事件的理论速度限制是多少?
我即将开始一个项目,其中实时数据传输和可视化是一个核心功能。数字流将通过USB接收并绘制在屏幕上。很可能会监听某种类型的在C#中重复触发事件的理论速度限制是多少?,c#,multithreading,events,C#,Multithreading,Events,我即将开始一个项目,其中实时数据传输和可视化是一个核心功能。数字流将通过USB接收并绘制在屏幕上。很可能会监听某种类型的数据接收(一些数据)事件 因此,我有兴趣了解C#中事件触发的理论极限,这样我就可以事先知道是否正在“设计”一个不可能的瓶颈,而这将在以后需要实质性的更改或更严重的问题 以下是一些示例情况: 如果我告诉一个对象运行一个无限循环,它除了触发一个事件外什么都不做,那么触发频率是多少 如果我循环链接相似的对象,使对象B听A.Fired,C听B.Fired,等等,A听N.Fired,那么
数据接收(一些数据)
事件
因此,我有兴趣了解C#中事件触发的理论极限,这样我就可以事先知道是否正在“设计”一个不可能的瓶颈,而这将在以后需要实质性的更改或更严重的问题
以下是一些示例情况:
最后,对我来说,使用C#并关注如此低级的细节让我感到奇怪。实时系统的定义是一个保证响应时间的系统,而C#被垃圾收集,你不能对响应时间做出很强的保证。如果您非常担心将参数传递给函数的成本,我认为您应该考虑使用其他语言来实际控制这些细节。理论上没有限制。唯一的限制是CPU的工作速度……我自己对此的看法(基于以前编写驱动程序的经验)是这两个动作应该是不相交的。事件的收集应该是高吞吐量的,并且专门用于接收数据。而事件的消耗应该异步完成。这样,消费速度就不会成为接收的瓶颈。所以我不会使用clr事件来处理基于硬件的实时信号。这一点你自己很难理解。只要在for()循环中引发一个事件一百万次,就可以使用秒表查看它花费了多长时间。无论你发现什么,都比USB传输数据快得多。如果你不知道一个典型的事件处理程序处理数据需要多长时间,那就没用了。我可能会使用RTOS而不是Windows。我不太熟悉实时/多线程术语,但我想我的系统不是严格意义上的实时,但我当然希望它比通过USB传输数据更快地消耗数据。你的回答清楚地表明,活动筹办是一个非常轻量级的操作,我不需要为此担心。