Bon j'ai un probleme simple mais complique a resoudre.
J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2 threads
je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je
voudrais, lorsque l'un des threads genere un certain type d'exception, que
les deuxieme thread genere lui aussi instantanement une exception
specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la
solution.
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
"Ben" wrote in message news:<3f603625$0$13301$...
Bon j'ai un probleme simple mais complique a resoudre. J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2 threads je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je voudrais, lorsque l'un des threads genere un certain type d'exception, que les deuxieme thread genere lui aussi instantanement une exception specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la solution.
Ce n'est pas possible : Par définition, une exception est liée à la pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse faire, c'est, dans le catch du thread qui a lancé l'exception, positionner de manière atomique un flag qui est testé régulièrment par l'autre thread, mais tu n'obtiendra pas de simultanéité.
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans le thread qiu n'a pas levé initialement l'exception, d'une exception sans aucun rapport avec le contexte d'exécution courant? C'est quoi l'objectif?
Arnaud
"Ben" <serbenet@free.fr> wrote in message news:<3f603625$0$13301$626a54ce@news.free.fr>...
Bon j'ai un probleme simple mais complique a resoudre.
J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2 threads
je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je
voudrais, lorsque l'un des threads genere un certain type d'exception, que
les deuxieme thread genere lui aussi instantanement une exception
specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la
solution.
Ce n'est pas possible : Par définition, une exception est liée à la
pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse
faire, c'est, dans le catch du thread qui a lancé l'exception,
positionner de manière atomique un flag qui est testé régulièrment par
l'autre thread, mais tu n'obtiendra pas de simultanéité.
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans
le thread qiu n'a pas levé initialement l'exception, d'une exception
sans aucun rapport avec le contexte d'exécution courant? C'est quoi
l'objectif?
Bon j'ai un probleme simple mais complique a resoudre. J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2 threads je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je voudrais, lorsque l'un des threads genere un certain type d'exception, que les deuxieme thread genere lui aussi instantanement une exception specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la solution.
Ce n'est pas possible : Par définition, une exception est liée à la pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse faire, c'est, dans le catch du thread qui a lancé l'exception, positionner de manière atomique un flag qui est testé régulièrment par l'autre thread, mais tu n'obtiendra pas de simultanéité.
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans le thread qiu n'a pas levé initialement l'exception, d'une exception sans aucun rapport avec le contexte d'exécution courant? C'est quoi l'objectif?
Arnaud
Ben
"Arnaud Debaene" wrote in message news:
"Ben" wrote in message
news:<3f603625$0$13301$...
Bon j'ai un probleme simple mais complique a resoudre. J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2
threads
je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je voudrais, lorsque l'un des threads genere un certain type d'exception, que les deuxieme thread genere lui aussi instantanement une exception specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la solution.
Ce n'est pas possible : Par définition, une exception est liée à la pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse faire, c'est, dans le catch du thread qui a lancé l'exception, positionner de manière atomique un flag qui est testé régulièrment par l'autre thread, mais tu n'obtiendra pas de simultanéité.
Ouais c'est bien ca le problem il me faut de la simultaneite ou "quasi-simultaneite"..
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans le thread qiu n'a pas levé initialement l'exception, d'une exception sans aucun rapport avec le contexte d'exécution courant? C'est quoi l'objectif?
Arnaud
Le probleme il est simple : J'ai un thread qui controlle un hardware et qui a besoin de tourner rapidement pour stocker les infos issues de cet hardware. J'ai un autre thread qui a acces a ces infos et qui les utilise et les manipule. Il se peut que mon premier thread genere une exception (probleme materiel ou autre) et dans ce cas en fonction de l'exception genere je dois rapidement stopper mon deuxieme thread (dont le fonctionnement depend grandement du fonctionnement du premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est faisable. Peut-on a partir d'un thread forcer un autre thread a genere une exception. Un peu comme TerminateThread mais au lieu de preciser un code d'erreur et terminer le thread on preciserait une exception et le thread se terminerait?
"Arnaud Debaene" <adebaene@club-internet.fr> wrote in message
news:16a4a8c7.0309120046.38818a16@posting.google.com...
"Ben" <serbenet@free.fr> wrote in message
news:<3f603625$0$13301$626a54ce@news.free.fr>...
Bon j'ai un probleme simple mais complique a resoudre.
J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2
threads
je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je
voudrais, lorsque l'un des threads genere un certain type d'exception, que
les deuxieme thread genere lui aussi instantanement une exception
specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la
solution.
Ce n'est pas possible : Par définition, une exception est liée à la
pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse
faire, c'est, dans le catch du thread qui a lancé l'exception,
positionner de manière atomique un flag qui est testé régulièrment par
l'autre thread, mais tu n'obtiendra pas de simultanéité.
Ouais c'est bien ca le problem il me faut de la simultaneite ou
"quasi-simultaneite"..
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans
le thread qiu n'a pas levé initialement l'exception, d'une exception
sans aucun rapport avec le contexte d'exécution courant? C'est quoi
l'objectif?
Arnaud
Le probleme il est simple : J'ai un thread qui controlle un hardware et qui
a besoin de tourner rapidement pour stocker les infos issues de cet
hardware. J'ai un autre thread qui a acces a ces infos et qui les utilise et
les manipule. Il se peut que mon premier thread genere une exception
(probleme materiel ou autre) et dans ce cas en fonction de l'exception
genere je dois rapidement stopper mon deuxieme thread (dont le
fonctionnement depend grandement du fonctionnement du premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est
faisable. Peut-on a partir d'un thread forcer un autre thread a genere une
exception. Un peu comme TerminateThread mais au lieu de preciser un code
d'erreur et terminer le thread on preciserait une exception et le thread se
terminerait?
Bon j'ai un probleme simple mais complique a resoudre. J'ai 2 threads qui tournent au meme moment en parallele. Dans les 2
threads
je gere les exceptions a l'aide d'un try-catch. Mon probleme est que je voudrais, lorsque l'un des threads genere un certain type d'exception, que les deuxieme thread genere lui aussi instantanement une exception specifique. Mais impossible d'arriver a mes fins. Si quelqu'un a la solution.
Ce n'est pas possible : Par définition, une exception est liée à la pile d'exécution, donc à un thread spécifique. Le mieux que tu puisse faire, c'est, dans le catch du thread qui a lancé l'exception, positionner de manière atomique un flag qui est testé régulièrment par l'autre thread, mais tu n'obtiendra pas de simultanéité.
Ouais c'est bien ca le problem il me faut de la simultaneite ou "quasi-simultaneite"..
Je suis sceptiqe sur l'utilité du truc : qu'est-ce que tu ferais, dans le thread qiu n'a pas levé initialement l'exception, d'une exception sans aucun rapport avec le contexte d'exécution courant? C'est quoi l'objectif?
Arnaud
Le probleme il est simple : J'ai un thread qui controlle un hardware et qui a besoin de tourner rapidement pour stocker les infos issues de cet hardware. J'ai un autre thread qui a acces a ces infos et qui les utilise et les manipule. Il se peut que mon premier thread genere une exception (probleme materiel ou autre) et dans ce cas en fonction de l'exception genere je dois rapidement stopper mon deuxieme thread (dont le fonctionnement depend grandement du fonctionnement du premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est faisable. Peut-on a partir d'un thread forcer un autre thread a genere une exception. Un peu comme TerminateThread mais au lieu de preciser un code d'erreur et terminer le thread on preciserait une exception et le thread se terminerait?
Arnaud Debaene
Ben wrote:
Le probleme il est simple : J'ai un thread qui controlle un hardware et qui a besoin de tourner rapidement pour stocker les infos issues de cet hardware. J'ai un autre thread qui a acces a ces infos et qui les utilise et les manipule. Il se peut que mon premier thread genere une exception (probleme materiel ou autre) et dans ce cas en fonction de l'exception genere je dois rapidement stopper mon deuxieme thread (dont le fonctionnement depend grandement du fonctionnement du premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est faisable. Peut-on a partir d'un thread forcer un autre thread a genere une exception. Un peu comme TerminateThread mais au lieu de preciser un code d'erreur et terminer le thread on preciserait une exception et le thread se terminerait?
C'est peut être faisable avec une APC (cf QueueUserAPC) , mais il y a beaucoup plus simple :
- A côté de ta zone de stockage des données d'acquisition partagées entre les 2 threads, tu mets un bool "acquisition_ok" initialement à false. Tu protèges cette variable contre les accès concurrents par le même mutex (ou section critique) que ta zone pour les données d'acquisistion.
- S'il y a une erreur hardware, ton thread d'acquisition positionnne cette variable au lieu d'écrire les nouvelles données acquises.
- Le thread de traitement, à chaque tour de boucle, vérifie l'état de ce flag. S'il est positionné, il gère l'erreur (en lancant une exception si nécessaire, à toi de voir). Sinon, il extrait les prochaines données et les traite normalement.
Arnaud
Ben wrote:
Le probleme il est simple : J'ai un thread qui controlle un hardware
et qui a besoin de tourner rapidement pour stocker les infos issues
de cet hardware. J'ai un autre thread qui a acces a ces infos et qui
les utilise et les manipule. Il se peut que mon premier thread genere
une exception (probleme materiel ou autre) et dans ce cas en fonction
de l'exception genere je dois rapidement stopper mon deuxieme thread
(dont le fonctionnement depend grandement du fonctionnement du
premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est
faisable. Peut-on a partir d'un thread forcer un autre thread a
genere une exception. Un peu comme TerminateThread mais au lieu de
preciser un code d'erreur et terminer le thread on preciserait une
exception et le thread se terminerait?
C'est peut être faisable avec une APC (cf QueueUserAPC) , mais il y a
beaucoup plus simple :
- A côté de ta zone de stockage des données d'acquisition partagées entre
les 2 threads, tu mets un bool "acquisition_ok" initialement à false. Tu
protèges cette variable contre les accès concurrents par le même mutex (ou
section critique) que ta zone pour les données d'acquisistion.
- S'il y a une erreur hardware, ton thread d'acquisition positionnne cette
variable au lieu d'écrire les nouvelles données acquises.
- Le thread de traitement, à chaque tour de boucle, vérifie l'état de ce
flag. S'il est positionné, il gère l'erreur (en lancant une exception si
nécessaire, à toi de voir). Sinon, il extrait les prochaines données et les
traite normalement.
Le probleme il est simple : J'ai un thread qui controlle un hardware et qui a besoin de tourner rapidement pour stocker les infos issues de cet hardware. J'ai un autre thread qui a acces a ces infos et qui les utilise et les manipule. Il se peut que mon premier thread genere une exception (probleme materiel ou autre) et dans ce cas en fonction de l'exception genere je dois rapidement stopper mon deuxieme thread (dont le fonctionnement depend grandement du fonctionnement du premier).
Il y a peut-etre une autre possibilite mais je ne sais pas si c'est faisable. Peut-on a partir d'un thread forcer un autre thread a genere une exception. Un peu comme TerminateThread mais au lieu de preciser un code d'erreur et terminer le thread on preciserait une exception et le thread se terminerait?
C'est peut être faisable avec une APC (cf QueueUserAPC) , mais il y a beaucoup plus simple :
- A côté de ta zone de stockage des données d'acquisition partagées entre les 2 threads, tu mets un bool "acquisition_ok" initialement à false. Tu protèges cette variable contre les accès concurrents par le même mutex (ou section critique) que ta zone pour les données d'acquisistion.
- S'il y a une erreur hardware, ton thread d'acquisition positionnne cette variable au lieu d'écrire les nouvelles données acquises.
- Le thread de traitement, à chaque tour de boucle, vérifie l'état de ce flag. S'il est positionné, il gère l'erreur (en lancant une exception si nécessaire, à toi de voir). Sinon, il extrait les prochaines données et les traite normalement.