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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
"Antonio DA SILVA" <antonio-dasilva@tele2.fr> wrote in message news:<QWqvc.49275$zm5.25025@nntpserver.swip.net>...
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.
"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.