2011-01-31 16 views
1

一部のRTOSでは、カーネルがスレッドに切り替えたり、スレッドを切り替えたりするときに呼び出されるコールアウト関数もあります。 pSOSでは、TaskSwitchCalloutと呼ばれていました。これには、スレッドがどのくらいのCP​​U時間を取っているかを知るためのカウンターをインクリメントするコードがあります。 Qnxでは、カーネルがタスクを切り替えて同じカウンタを増やしたときに発生するイベントにサブスクライブすることができます。Windowsでコンテキストスイッチの通知を受け取る方法(7)

Windowsには同等の機能はありますか? Windowsでは、スレッドコンテキストがシステム内で実行されている他のスレッド(読み取り:管理されたコード)を基準にしていつ切り替わるかを決めることはできません。

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

ありがとうございます!

+0

... Windowsは近いものではありませんRTOSとAFAIKはそのような通知を送信するようには設計されていませんでした。 (システムが劇的に遅くなるのではないでしょうか?) – Mehrdad

+0

[QueryThreadCycleTime](http://msdn.microsoft.com/en-us/library/ms684943(v = vs.85).aspx)があります - これは役に立ちますか? –

答えて

1

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

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

あなたはコンテキストを担当しているので、別の方法として、あなたは、Windows 7のユーザーモードスケジューラの使用を作ることができるスイッチ:私はそのようなことがあると信じていませんUser-mode scheduling

関連する問題