次の方法で共有


プロファイル API の通知スレッド

更新 : 2007 年 11 月

通常は、イベントを生成するスレッドが通知も実行します。このような通知 (たとえば FunctionEnterFunctionLeave) では、ThreadID が明示的に指定されることはありません。また、プロファイラでは、グローバル ストレージに分析ブロックのインデックスを作成するのではなく、影響を受けるスレッドの ThreadID を基に、スレッド ローカル ストレージを使用して分析ブロックを格納および更新する方法を採用する場合があります。

これらのコールバックはシリアル化されないことに注意してください。ユーザーは、スレッド セーフなデータ構造を作成すると共に、必要に応じてプロファイラ コードをロックして、複数のスレッドからの並行アクセスを防ぐことで、コードを保護する必要があります。そのため、状況によっては、通常とは異なるシーケンスでコールバックを受け取る場合があります。たとえば、マネージ アプリケーションで、まったく同じコードを実行する 2 つのスレッドを生成するとします。この場合、なんらかの関数について、一方のスレッドから ICorProfilerCallback::JITCompilationStarted イベントを受け取った後、ICorProfilerCallback::JITCompilationFinished コールバックを受け取る前に、他のスレッドから FunctionEnter コールバックを受け取ることがあり得ます。(-:In this case, the user will receive a FunctionEnter callback for a function that may not have been fully just-in-time (JIT) compiled yet.)=0%(つまり、ユーザーは、まだ完全に Just-In-Time (JIT) コンパイルされていない可能性のある関数の FunctionEnter コールバックを受け取ることになります。:-)

参照

その他の技術情報

プロファイル API の共通機能

プロファイリングの概要