.Net中的实时优先级

时间:2012-02-28 20:41:28

标签: .net usb real-time scheduler thread-priority

我有一个应用程序通过D2XX接口将音频数据提供给FTDI设备。它在我的应用程序具有焦点时完美地工作,并且使用非常少的CPU(5%)。但是当我敲击CPU(通过切换到其他应用程序或重绘图)时,有时我会在音频中产生断断续续的声音。

我尝试了很多东西来防止这种情况(进程/线程优先级到实时,MMCSS调度等),但有时仍会发生。

还有其他方法可以提高优先级,还是没有编写内核驱动程序就不可能?

3 个答案:

答案 0 :(得分:0)

如果将进程(非线程)优先级设置为“Realtime”,则应始终在其他非Realtime进程的线程之前运行其线程。所以我认为这是你能做的最好的事情。

但是,只有在绝对必要时才应使用实时进程优先级,因为它可能导致整个系统无响应。

答案 1 :(得分:0)

增加为设备提供服务的线程的优先级,或者增加(如果可能)缓冲区大小以便与设备进行通信。

窗口内任务切换的最短时间为10毫秒。如果您的线程无法按时处理设备中的数据,您将会出现断断续续的声音。

答案 2 :(得分:-1)

您可能需要考虑使用.net 4.0的并行编程功能。当您创建任务工厂并让工作由多个并行线程完成时,分配的cpu%将更高。