X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOMultiThreadImageReader.cpp;h=e7b023bba7e2ddc75e78d998e4f045036ca6c409;hb=7805f0d563d5ba9be6022f8016c589b57c287f1d;hp=7aa60acedeb72adf688478a6af7494b0edbf46e5;hpb=79372affb878a3ffd7896b8ffbb06b564c0550ce;p=creaImageIO.git diff --git a/src/creaImageIOMultiThreadImageReader.cpp b/src/creaImageIOMultiThreadImageReader.cpp index 7aa60ac..e7b023b 100644 --- a/src/creaImageIOMultiThreadImageReader.cpp +++ b/src/creaImageIOMultiThreadImageReader.cpp @@ -31,6 +31,9 @@ #include #include + #include + + #include #ifdef _DEBUG #define new DEBUG_NEW @@ -49,8 +52,22 @@ namespace creaImageIO } //===================================================================== + class wxThreadEED2 + { + public: + void Delete() { printf("EED wxThreadEED2::Delete() \n"); } + int Run() { printf("EED wxThreadEED2::Run() \n"); return 0;} + void Pause() { printf("EED wxThreadEED2::Pause() \n"); } + void Create() { printf("EED wxThreadEED2::Create() \n"); } + bool IsAlive() { printf("EED wxThreadEED2::IsAlive() \n"); return false; } + bool TestDestroy() { printf("EED wxThreadEED2::TestDestroy() \n"); return false; } + int GetCurrentId() { printf("EED wxThreadEED2::GetCurrentId() \n"); return -999; } + }; + //===================================================================== - class ThreadedImageReader: public wxThread +//EED 2018-08-20 +// class ThreadedImageReader: public wxThread + class ThreadedImageReader: public wxThreadEED2 { public: ThreadedImageReader(MultiThreadImageReader* tir) : @@ -79,7 +96,7 @@ namespace creaImageIO //===================================================================== MultiThreadImageReader::MultiThreadImageReader(int number_of_threads) : //mDoNotSignal(false), - mReader(0), + mReader(NULL), mTotalMem(0), mTotalMemMax(1000000) { @@ -89,16 +106,13 @@ namespace creaImageIO mDone = false; // Create the threads -printf("EED MultiThreadImageReader::MultiThreadImageReader %d \n", number_of_threads); - for (int i=0; i t(new ThreadedImageReader(this), ThreadedImageReader::deleter()); - mThreadedImageReaderList.push_back(t); - std::cout << " ===> Thread "< t(new ThreadedImageReader(this), ThreadedImageReader::deleter()); + mThreadedImageReaderList.push_back(t); + std::cout << " ===> Thread "< 0) return true; @@ -139,7 +152,6 @@ printf("EED MultiThreadImageReader::Start Start\n"); wxMutexLocker locker(GetMultiThreadImageReaderUserMutex()); // std::cout << "EO Start : #Threads running = " // << mNumberOfThreadedReadersRunning<first; - } //for - mImages.clear(); + + CleanMImagesMap(); + mDone = true; -printf("EED MultiThreadImageReader::Stop End\n"); + } //===================================================================== + + void MultiThreadImageReader::CleanMImagesMap() + { + ImageMapType::iterator j; + for (j=mImages.begin(); j!=mImages.end(); ++j) + { + delete j->first; + } //for + mImages.clear(); + } + //===================================================================== MultiThreadImageReader::~MultiThreadImageReader() { -printf("EED MultiThreadImageReader::~MultiThreadImageReader Start\n"); // std::cout << "#### MultiThreadImageReader::~MultiThreadImageReader()" // <GetFilename() ); + } // for it +*/ + } //===================================================================== @@ -359,29 +387,28 @@ printf("EED MultiThreadImageReader::~MultiThreadImageReader End\n"); // if (mNumberOfThreadedReadersRunning==0) // if (mThreadedImageReaderList.size()==0) if (true) - { + { ImageToLoad itl(this,filename); ImageMapType::iterator i = mImages.find(&itl); if (i!=mImages.end()) - { - ImageToLoadPtr pitl = const_cast(i->first); - // Already inserted - if (pitl->GetImage() != 0) - { - // Already read - UpdateUnloadPriority(pitl, - GetMaximalPriorityWithoutLocking()+1); - return pitl->GetImage(); - } - } + { + ImageToLoadPtr pitl = const_cast(i->first); + // Already inserted + if (pitl->GetImage() != NULL) + { + // Already read + UpdateUnloadPriority( pitl, GetMaximalPriorityWithoutLocking()+1 ); + return pitl->GetImage(); + } // if pitl->GetImage() + } // if i + ImageToLoadPtr pitl = new ImageToLoad(this,filename,0); - mImages[pitl] = 0; - pitl->SetImage(mReader->ReadImage(filename)); - UpdateUnloadPriority(pitl, - GetMaximalPriorityWithoutLocking()+1); + mImages[pitl] = NULL; + pitl->SetImage( mReader->ReadImage(filename) ); + UpdateUnloadPriority( pitl, GetMaximalPriorityWithoutLocking()+1 ); return pitl->GetImage(); - } - + } // if true + /* mRequestedFilename = filename; mRequestedImage = 0; @@ -448,6 +475,8 @@ printf("EED MultiThreadImageReader::~MultiThreadImageReader End\n"); while (true); // */ + printf("EED MultiThreadImageReader::GetImage END\n"); + } //=====================================================================