OVH Cloud OVH Cloud

Threads et DLL

1 réponse
Avatar
Antonio DA SILVA
Bonjour,

j'ai eu quelques prbs avec des threads que j'utilise
dans une DLL liée aux MFCs (mais je pense que c'est vrai
aussi pour une DLL simple). Sur l'exitinstance, plus
possible de lancer une nouvelle thread. Egalement, si une
thread est toujours active, et bien elle est "figée" et
impossible de la contrôler pour l'arrêter par exemple.

Avez-vous déjà eu ce genre d'expériences?
Comment gérez vous le démarrage/arrêt des threads
dans une DLL? (moi j'exporte deux méthodes "start" et
"stop" pour lancer/arrêter les threads, avant d'entrer
dans le exitinstance, mais cela impose plus de rigueur
sur le dev du processus qui l'utilise).

Merci.

1 réponse

Avatar
adebaene
"Antonio DA SILVA" wrote in message news:<QWqvc.49275$...
Bonjour,

j'ai eu quelques prbs avec des threads que j'utilise
dans une DLL liée aux MFCs (mais je pense que c'est vrai
aussi pour une DLL simple). Sur l'exitinstance, plus
possible de lancer une nouvelle thread. Egalement, si une
thread est toujours active, et bien elle est "figée" et
impossible de la contrôler pour l'arrêter par exemple.


Sur l'exitinstance de quoi? De l'application? D'un thread? Dans un
DLLMain? Soit plus précis!


Avez-vous déjà eu ce genre d'expériences?
Comment gérez vous le démarrage/arrêt des threads
dans une DLL? (moi j'exporte deux méthodes "start" et
"stop" pour lancer/arrêter les threads, avant d'entrer
dans le exitinstance, mais cela impose plus de rigueur
sur le dev du processus qui l'utilise).


De manière générale, on ne peut pas, dans DLLMain, appeler des
fonctions dans auncune autre DLL sauf kernel32.dll, car il y a risque
de deadlock (on ne peut pas charger une DLL et appeler DllMain pendant
qu'on est en train de charger une autre DLL - deadlock sur le DLL
lock). C'est peut être çà qui se produit indirectement dans ton cas.

Arnaud