マルチメディア クラス スケジューラ サービスを試してみたいhttp://msdn.microsoft.com/en-us/library/ms684247(v=VS.85).aspx
スレッドをより適切にスケジュールすることで、待ち時間を短縮できることを願っています。
C# でどのように行うことができますか?
注: 私のアプリはマルチメディアとは関係ありません。必要なのは MMCSS の機能だけです。
マルチメディア クラス スケジューラ サービスを試してみたいhttp://msdn.microsoft.com/en-us/library/ms684247(v=VS.85).aspx
スレッドをより適切にスケジュールすることで、待ち時間を短縮できることを願っています。
C# でどのように行うことができますか?
注: 私のアプリはマルチメディアとは関係ありません。必要なのは MMCSS の機能だけです。
特定のタスクに関連する作業を実行している各スレッドは、AvSetMmMaxThreadCharacteristics または AvSetMmThreadCharacteristics 関数を呼び出して、そのタスクで作業していることを MMCSS に通知します。
必要なのは、これらの API 呼び出しのいずれかを P/Invoke することだけです。
しかし、ガベージコレクターが介入して物事を台無しにすると、すべてが無駄になると思います。
裏で何が起こっているかを確認するために、アプリのプロファイリングを行いましたか? あなたのアプリが本当にレイテンシーに敏感なら、C# はおそらく間違った言語の選択です。
マネージ アプリケーションで MMCSS を使用する意味がわかりません。結局のところ、MMCSS のポイントは、プロセスのスケジューリングの優先度を調整して、マルチメディア ストリーム処理中の停止を回避することです。これは、ナノ秒レベルのスケジューリングです。しかし、ガベージ コレクションがいつでも発生する可能性があり、数十ミリ秒または数百ミリ秒かかる可能性があるマネージ言語では、ガベージ コレクションによって完全に消去されずに MMCSS が提供する利点はわかりません。
そのことを念頭に置いて、MMCSS への管理されたインターフェイスがすぐに表示されるとは思いません。確かに P/Invoke 経由でアクセスできますが、奇跡は期待できません :)