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; 
        }
      }