]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOMultiThreadImageReader.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOMultiThreadImageReader.cpp
index 8ec273fec3d4350d427d7e07c129964b8a53a052..3f4ba3ab6413f38c722ab51e41fe848cad3141e3 100644 (file)
@@ -13,6 +13,7 @@ namespace creaImageIO
     vtkImageData* image)
   {
     wxMutexLocker lock(mMultiThreadImageReaderUserMutex);
+
     this->OnMultiThreadImageReaderEvent(filename,type,image);
   }
   //=====================================================================
@@ -34,6 +35,7 @@ namespace creaImageIO
   private:
     ImageReader mReader;
     MultiThreadImageReader* mMultiThreadImageReader;
+       
   };
   //=====================================================================
 
@@ -43,7 +45,7 @@ namespace creaImageIO
     : //mDoNotSignal(false),
       mReader(0),
       mTotalMem(0),
-      mTotalMemMax(100000)
+      mTotalMemMax(1000000)
   {
     //    std::cout << "#### MultiThreadImageReader::MultiThreadImageReader("
     //       << " #threads= " << number_of_threads <<" )"<<std::endl;
@@ -53,6 +55,8 @@ namespace creaImageIO
       {
        ThreadedImageReader* t = new ThreadedImageReader(this);
        mThreadedImageReaderList.push_back(t);
+        std::cout << "  ===> Thread "<<i
+                             <<" successfully added"<< std::endl;
       }
     mNumberOfThreadedReadersRunning = 0;
     // Init the queue
@@ -89,8 +93,8 @@ namespace creaImageIO
          }
        else 
          {
-           //      std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
-           //                <<" successfully created"<< std::endl;
+                   std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
+                             <<" successfully created"<< std::endl;
            
          }
       }
@@ -113,8 +117,12 @@ namespace creaImageIO
     for (i =mThreadedImageReaderList.begin();
         i!=mThreadedImageReaderList.end();
         i++)
-      {
-       (*i)->Delete();
+      { std::cout << "  ===> Thread "<<(*i)->GetCurrentId()
+                             <<" successfully stopped"<< std::endl;
+                 if((*i)->IsAlive())
+                 {
+                       (*i)->Delete();
+                 }
       }
     mThreadedImageReaderList.clear();
     // Wait a little to be sure that all threads have stopped
@@ -126,7 +134,7 @@ namespace creaImageIO
     do 
       {
        // Sleep a little
-       wxMilliSleep(10);
+               wxMilliSleep(10);
        // Lock
        {
          wxMutexLocker locker(GetMultiThreadImageReaderUserMutex());
@@ -275,7 +283,8 @@ namespace creaImageIO
       }
     else if (e==MultiThreadImageReaderUser::ThreadedReaderStopped)
       {
-       mNumberOfThreadedReadersRunning--;
+       
+                mNumberOfThreadedReadersRunning--;
        //      std::cout << "#TR=" << mNumberOfThreadedReadersRunning << std::endl;
       }
   }
@@ -285,15 +294,20 @@ namespace creaImageIO
   vtkImageData* MultiThreadImageReader::GetImage(const std::string& filename)
   {
         // Start();
-    //    std::cout << "** MultiThreadImageReader::GetImage('"<<filename<<"')"
-    //       <<std::endl;
+    //       std::cout << "** MultiThreadImageReader::GetImage('"<<filename<<"')"
+    //          <<std::endl;
     
     do 
       {
-       wxMutexLocker lock(GetMultiThreadImageReaderUserMutex()); //mMutex);
+       //      wxMutexLocker lock(GetMultiThreadImageReaderUserMutex()); //mMutex);
                
-                 if (mNumberOfThreadedReadersRunning==0)
-//     if (mThreadedImageReaderList.size()==0)
+       //     std::cout << "** MultiThreadImageReader::GetImage('"<<filename
+       //             <<"') lock ok"
+       //               <<std::endl;
+    
+       //                if (mNumberOfThreadedReadersRunning==0)
+       //      if (mThreadedImageReaderList.size()==0)
+       if (true)
          {
            ImageToLoad itl(this,filename);
            ImageMapType::iterator i = mImages.find(&itl);
@@ -316,7 +330,8 @@ namespace creaImageIO
                                 GetMaximalPriorityWithoutLocking()+1);
            return pitl->GetImage();
          }
-       
+
+       /*      
        mRequestedFilename = filename;
        mRequestedImage = 0;
        ImageToLoad itl(this,filename);
@@ -355,11 +370,13 @@ namespace creaImageIO
            mImages[pitl] = 0;
            mQueue.insert(pitl);
          }
+       */
       }
     while (0);
 
     //    std::cout << "Waiting..."<<std::endl;
 
+    /*
     // Waiting that it is read
     int n = 0;
     do 
@@ -379,7 +396,7 @@ namespace creaImageIO
       }
     while (true);
     // 
-    
+    */
   }
   //=====================================================================
   
@@ -533,8 +550,7 @@ namespace creaImageIO
     // While was not deleted 
     while (!TestDestroy())
       {
-       //      std::cout << "### Thread "<<GetCurrentId()<<" waiting for image"
-       //        << std::endl;
+               //std::cout << "### Thread "<<GetCurrentId()<<" still alive"  << std::endl;
          
        // Lock the mutex
        mMultiThreadImageReader->MultiThreadImageReaderEventLock();