]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOMultiThreadImageReader.cpp
#3218 creaImageIO Feature New Normal - vtk8itk4wx3-mingw64
[creaImageIO.git] / src / creaImageIOMultiThreadImageReader.cpp
index 62eb7bdbee05a3d5fb9c5a06e6c65ad091176a64..7aa60acedeb72adf688478a6af7494b0edbf46e5 100644 (file)
@@ -45,7 +45,6 @@ namespace creaImageIO
     vtkImageData* image)
   {
     wxMutexLocker lock(mMultiThreadImageReaderUserMutex);
-
     this->OnMultiThreadImageReaderEvent(filename,type,image);
   }
   //=====================================================================
@@ -57,12 +56,9 @@ namespace creaImageIO
     ThreadedImageReader(MultiThreadImageReader* tir) :
       mMultiThreadImageReader(tir)
     {}
-
     void* Entry();
     void  OnExit();
-
     vtkImageData* Read(const std::string& filename);
-    
        struct deleter
        {
                void operator()(ThreadedImageReader* p)
@@ -72,11 +68,9 @@ namespace creaImageIO
        };
        friend struct deleter;
 
-
   private:
     ImageReader mReader;
     MultiThreadImageReader* mMultiThreadImageReader;
-       
   };
 
   //=====================================================================
@@ -94,6 +88,9 @@ namespace creaImageIO
 
          mDone = false;
     // Create the threads
+       
+printf("EED MultiThreadImageReader::MultiThreadImageReader %d \n", number_of_threads); 
+
     for (int i=0; i<number_of_threads; i++) 
       {
                  //ThreadedImageReader* t = new ThreadedImageReader(this);
@@ -119,6 +116,7 @@ namespace creaImageIO
   //=====================================================================
   bool MultiThreadImageReader::Start()
   {
+printf("EED MultiThreadImageReader::Start  Start\n");
     //    std::cout << "#### MultiThreadImageReader::Start()"
     //               <<std::endl;
          if (mNumberOfThreadedReadersRunning > 0) return true;
@@ -127,24 +125,21 @@ namespace creaImageIO
     for (i =mThreadedImageReaderList.begin();
         i!=mThreadedImageReaderList.end();
         i++)
-      {
-       (*i)->Create();
-       if ( (*i)->Run() != wxTHREAD_NO_ERROR )
-         {
-           std::cout << "ERROR starting a thread"<< std::endl;
-           return false;
-         }
-       else 
-         {
-                   std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
-                             <<" successfully created"<< std::endl;
-           
-         }
-      }
-    wxMutexLocker locker(GetMultiThreadImageReaderUserMutex());
-    //    std::cout << "EO Start : #Threads running = "
-    //               << mNumberOfThreadedReadersRunning<<std::endl;
-
+    {
+               (*i)->Create();
+               if ( (*i)->Run() != wxTHREAD_NO_ERROR )
+                 {
+                       std::cout << "ERROR starting a thread"<< std::endl;
+                       return false;
+                 }     else  {
+                                       std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
+                                                 <<" successfully created"<< std::endl;
+                 } // if
+               } // for
+               wxMutexLocker locker(GetMultiThreadImageReaderUserMutex());
+               //    std::cout << "EO Start : #Threads running = "
+               //                    << mNumberOfThreadedReadersRunning<<std::endl;
+printf("EED MultiThreadImageReader::Start  Start\n");
     return true;
   }
   //=====================================================================
@@ -152,23 +147,27 @@ namespace creaImageIO
   //=====================================================================
   void MultiThreadImageReader::Stop()
   { 
+printf("EED MultiThreadImageReader::Stop  Start\n");
 //                 std::cout << "#### MultiThreadImageReader::Stop()"
 //           <<std::endl;
   //  std::cout << "Sending stop order to the threads..."<<std::endl;
+  
          if (mDone) return;
 
     ThreadedImageReaderListType::iterator i;
     for (i =mThreadedImageReaderList.begin();
         i!=mThreadedImageReaderList.end();
         i++)
-      { std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
+    { 
+               std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
                              <<" successfully stopped"<< std::endl;
                  if((*i)->IsAlive())
-                 {(*i)->Pause();
+                 {
+                         (*i)->Pause();
                          (*i).reset();
-                        //                       (*i)->Delete();
-                 }
-      }
+//                       (*i)->Delete();
+                 } // if i
+    } // for
    mThreadedImageReaderList.clear();
     // Wait a little to be sure that all threads have stopped
     // A better way to do this ?
@@ -196,26 +195,26 @@ namespace creaImageIO
 //        std::cout << "All threads stopped : OK "<<std::endl;
 
     ImageMapType::iterator j;
-    for (j =mImages.begin();
-        j!=mImages.end();
-        ++j)
-
-      {
-       delete j->first;
-      }
+    for (j =mImages.begin(); j!=mImages.end(); ++j)
+       {
+               delete j->first;
+    } //for 
     mImages.clear();
        mDone = true;
+printf("EED MultiThreadImageReader::Stop  End\n");
   }
   //=====================================================================
 
   //=====================================================================
   MultiThreadImageReader::~MultiThreadImageReader()
   {
+printf("EED MultiThreadImageReader::~MultiThreadImageReader  Start\n");
     //    std::cout << "#### MultiThreadImageReader::~MultiThreadImageReader()"
     //       <<std::endl;
     Stop();
     if (mReader) delete mReader;
        mThreadedImageReaderList.clear();
+printf("EED MultiThreadImageReader::~MultiThreadImageReader  End\n");
   }
   //=====================================================================