2010-06-20 21 views
1

J'essaie de comprendre un peu plus en détail comment un loaderlock OS est utilisé en relation avec le chargement et le déchargement de DLL sous Windows.Comment OS Loaderlock fonctionne

Je comprends que chaque DLL chargée est notifiée lorsqu'un nouveau thread est créé/détruit et qu'une nouvelle DLL est chargée/déchargée. Cela signifie-t-il que la fonction DllMain est exécutée dans un verrou et qu'aucun autre thread ne peut y accéder pendant son exécution et que si vous créez un autre thread dans cette fonction, vous pouvez bloquer le processus ou même le système d'exploitation ?

Est-ce que je comprends bien?

Y at-il un article quelque part qui explique cela?

Répondre

1

Un deadlock peut se produire lorsque deux threads essaient d'acquérir deux verrous dans l'ordre différent.

  • Discussion A se verrouiller A et tente alors d'obtenir serrure B
  • fil Pendant ce temps B obtient verrou B puis tente de se verrouiller un

Un fil qui est en cours d'exécution DllMain a déjà acquis une implicite Verrou d'O/S: donc ils (Microsoft) estiment qu'il peut être dangereux pour ce thread d'essayer d'acquérir un autre, deuxième verrou (par exemple parce qu'un thread différent pourrait déjà posséder ce verrou et être actuellement bloqué sur le verrou O/S implicite).

0

c'est correct.

Toute exécution est illégale parce elle peut conduire à utiliser et blocages de avant DLLs ont été initialisés par le chargeur du système d'exploitation.

Plus d'informations peuvent être trouvées ici: LoaderLock MDA (MSDN Website)