2010-06-20 3 views
1

작동 방법은 약간의 OS의 loaderlock는 Windows의 DLL의의 로딩 및 언 로딩 관련하여 사용하는 방법 자세한 내용을 이해하려고 노력 중이 야.OS Loaderlock이

나는 새로운 스레드가 생성/파괴하거나 새 DLL이/언로드로드 될 때마다로드 된 DLL 통지받을 것으로 알고 있습니다.

DllMain 함수가 잠금 내에서 실행되고 실행 중에 다른 스레드가 해당 스레드에 액세스 할 수 없으므로 해당 함수에서 다른 스레드를 만드는 경우 해당 프로세스 또는 OS ?

내 이해가 정확합니까?

일부 문서에서는이 작업을 설명하는 곳이 있습니까?

답변

1

deadlock가 발생할 수 있습니다.

  • 스레드 A는을 고정 가져온 다음 그 사이에 스레드 B가 잠금 B를 얻을 수
  • 잠금 B를 가져 오려고 시도하고 얻을 이미 암시를 인수했다 DllMain을 실행중인

스레드를 잠그려고 따라서 O/S 잠금 : 다른 스레드가 이미 해당 잠금을 소유하고 암시 적 O/S 잠금에서 현재 차단되어있을 수 있기 때문에 해당 스레드가 다른 두 번째 잠금을 획득하려고 시도하는 것이 안전하지 않을 수 있습니다 (Microsoft)).

0

정확합니다. 이 교착 상태가 발생할 수 있으며 운영 체제의 로더에 의해 을 초기화되기 전에 된 DLL의 사용 때문에

그러한 실행은 불법입니다.

자세한 내용은 여기에서 찾을 수 있습니다 : 두 개의 스레드가 다른 순서로 두 개의 잠금을 획득하려고 할 때 LoaderLock MDA (MSDN Website)