업데이트: 2007년 11월
대부분의 경우 이벤트를 생성하는 스레드는 알림도 실행합니다. FunctionEnter 및 FunctionLeave와 같은 알림은 명시적인 ThreadID를 제공할 필요가 없습니다. 또한 프로파일러에서는 전역 저장소의 분석 블록을 인덱싱하는 대신, 영향을 받는 스레드의 ThreadID를 기반으로 분석 블록을 저장 및 업데이트할 스레드 로컬 저장소를 사용할 수 있습니다.
이러한 콜백은 serialize되지 않습니다. 스레드로부터 안전한 데이터 구조를 만들고, 여러 스레드의 병렬 액세스를 방지해야 하는 경우 프로파일러 코드를 잠가 코드를 보호해야 합니다. 그러므로 경우에 따라 순서가 평소와 다른 콜백을 받을 수 있습니다. 예를 들어 관리되는 응용 프로그램에서 같은 코드를 실행하는 두 개의 스레드를 생성하는 경우 한 스레드에서는 특정 함수에 대해 ICorProfilerCallback::JITCompilationStarted 이벤트를 받고, 다른 스레드에서는 FunctionEnter 콜백을 받은 다음 ICorProfilerCallback::JITCompilationFinished 콜백을 받을 수 있습니다. 이 경우 사용자는 아직 완전히 JIT(Just-In-Time) 컴파일되지 않은 함수에 대해 FunctionEnter 콜백을 받습니다.