Bonjour,
j'essaye de faire tourner cette example de boucle mixant une exception et openMP sous linux avec gcc4.4.1 et openMP 3.0. J'ai aléatoirement des plantage de l'appilcation. J'ai cru comprendre que les exceptions ne pouvaient pas franchir les threads de openMP mais pourqoui cela plante-t-il à l'interieur si je les catch en interne aux threads.
Je sais c'est un peu compliqué, mais si quelqu'un a une suggestion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 class Exception : public std::exception { public : std::string Message; Exception(std::string Mes) { Message=Mes; } Exception(const char *Mes) { Message=Mes; } virtual const char* what() const throw() { return(Message.c_str()); } virtual ~Exception() throw() { } }; ... ... // Lancer à partir d'un thread de calcul std::string err; #pragma omp parallel for (int i=0;i<1000;i++) { try { throw Exception("une exception"); } catch (Exception &e) { err=e.Message; } }
Partager