1

一部のRTOSの場合、カーネルがスレッドに切り替わるとき、またはスレッドから切り替わるときに呼び出されるイベント、またはコールアウト関数があります。pSOSでは、TaskSwitchCalloutと呼ばれていました。これには、カウンターをインクリメントするコードがあり、スレッドが費やしているCPU時間を知ることができます。Qnxでは、カーネルがタスクを切り替えたときに発生するイベントをサブスクライブして、同じカウンターインクリメントを実行できます。

Windowsに同等のものはありますか?多くの場合、Windowsでは、システムで実行されている他のスレッド(read:managed code)と比較して、スレッドコンテキストがいつオンまたはオフに切り替えられたかを正確に判断できません。

なぜ私がこれをやろうとしているのか聞かないでください、私はそれについて話すことができません。ただし、Windowsのperfmonのコンテキストスイッチカウンターでは不十分だと言えます。しかし、perfmonのコンテキストスイッチカウンターはどこかから情報を取得する必要があると思います...スレッドごとにどこかにアクセスしようとしています。

ありがとう!!

4

1 に答える 1

1

Windows は、スレッドにコンテキスト スイッチを通知しません。

タイミング情報が必要な場合は、GetThreadTimesまたはQueryThreadCycleTime、またはパフォーマンス カウンターのいずれかを使用します。

別の方法として、Windows 7 のユーザー モード スケジューラを使用して、コンテキスト スイッチを担当することもできます。ユーザー モードのスケジューリング

于 2011-02-08T14:18:51.437 に答える