![]() |
1
4
提示:不要写入文件。。。。排队。 现代计算机有多个处理器。如果你想让某些东西尽可能快,使用多个处理器。
已完成;) 100毫秒是一个体面的操作时间很多。我已经成功地使用C#管理了每秒约25万个IO数据包(财务数据),毫不费力。
|
![]() |
2
2
为了在Windows on USB上获得良好的读吞吐量,通常需要将多个异步读(或非常大的读,这通常不太方便)排队到USB设备堆栈上。我不太清楚FTDI驱动程序/库在这方面的内部功能。 传统上,我用一组重叠的结构和一组缓冲区来编写机制,一有空就把它们塞进ReadFile。大约5-6年前,我在USB2上读40+MB/s的数据,所以现代的pc肯定能应付。
我同意其他人的观点,即您应该尽快脱离正在进行读取的线程—不要阻塞FTDI事件处理程序的时间超过将缓冲区放入另一个队列所需的时间。 我会预先分配一个缓冲区循环队列,选择下一个空闲的缓冲区并将接收到的数据放入其中,然后尽快完成事件处理。
不过,我很乐观——如果你真的能在硬件上缓冲100毫秒的数据,你应该能够让它可靠地工作。我希望我能说服我所有的客户允许这么多。。。 |
![]() |
3
0
那么你的接收代码是什么样的呢?您是否有一个以高优先级运行的线程专门负责捕获数据并以非阻塞的方式将其在内存中传递给另一个线程?您是否以提升的优先级运行进程本身? 您是否设计了其他代码来避免更昂贵的第二代垃圾收集?缓冲区有多大,它们在大对象堆上吗?你能有效地重用它们吗? |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |