如何在C#app中启用MMCSS?

时间:2010-06-23 11:47:47

标签: c# multithreading multimedia

我想尝试多媒体课程安排服务http://msdn.microsoft.com/en-us/library/ms684247(v=VS.85).aspx

我希望通过更好地安排我的线程来减少延迟。

如何在C#中完成?

注意:我的应用程序与多媒体无关我只需要MMCSS的功能。

2 个答案:

答案 0 :(得分:2)

  

正在执行工作的每个线程   与特定任务相关的调用   AvSetMmMaxThreadCharacteristics或   AvSetMmThreadCharacteristics函数   告知MMCSS它正在努力   那个任务。

您似乎只需要P / Invoke这些API调用中的一个或其他。

然而,我怀疑当垃圾收集器介入并混乱时,所有这些都是徒劳的。

您是否对该应用进行了任何分析,以了解正在进行的内容?如果你的应用确实对延迟敏感,那么说实话,C#可能是错误的语言选择。

答案 1 :(得分:0)

我不确定在托管应用程序中使用MMCSS的重点是什么。毕竟,MMCSS的重点是调整进程的调度优先级以避免多媒体流处理期间的停顿 - 我们正在谈论纳秒级调度。但是使用托管语言可以随时发生垃圾收集并且可能需要几十甚至几百个毫秒,那么我不确定MMCSS会提供什么好处垃圾收集不会完全消除。

考虑到这一点,我不希望很快看到MMCSS的托管接口。你当然可以通过P / Invoke访问它,但我不会想到它的奇迹:)