X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOMultiThreadImageReader.cpp;fp=src%2FcreaImageIOMultiThreadImageReader.cpp;h=7aa60acedeb72adf688478a6af7494b0edbf46e5;hb=79372affb878a3ffd7896b8ffbb06b564c0550ce;hp=62eb7bdbee05a3d5fb9c5a06e6c65ad091176a64;hpb=f5a8c7765cb23e949c7fe124a4b8a3b87b2d35ad;p=creaImageIO.git diff --git a/src/creaImageIOMultiThreadImageReader.cpp b/src/creaImageIOMultiThreadImageReader.cpp index 62eb7bd..7aa60ac 100644 --- a/src/creaImageIOMultiThreadImageReader.cpp +++ b/src/creaImageIOMultiThreadImageReader.cpp @@ -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 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<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< 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 "<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()" // <