
Classes | |
| struct | deleter |
Public Member Functions | |
| ThreadedImageReader (MultiThreadImageReader *tir) | |
| void * | Entry () |
| void | OnExit () |
| vtkImageData * | Read (const std::string &filename) |
| ThreadedImageReader (MultiThreadImageReader *tir) | |
| void * | Entry () |
| void | OnExit () |
| vtkImageData * | Read (const std::string &filename) |
Private Attributes | |
| ImageReader | mReader |
| MultiThreadImageReader * | mMultiThreadImageReader |
Friends | |
| struct | deleter |
Definition at line 26 of file creaImageIOMultiThreadImageReader.cpp.
| creaImageIO::ThreadedImageReader::ThreadedImageReader | ( | MultiThreadImageReader * | tir | ) | [inline] |
Definition at line 29 of file creaImageIOMultiThreadImageReader.cpp.
:
mMultiThreadImageReader(tir)
{}
| creaImageIO::ThreadedImageReader::ThreadedImageReader | ( | MultiThreadImageReader * | tir | ) | [inline] |
Definition at line 30 of file creaImageIOQMultiThreadImageReader.cpp.
:
mMultiThreadImageReader(tir)
{}
| void * creaImageIO::ThreadedImageReader::Entry | ( | ) |
Definition at line 561 of file creaImageIOMultiThreadImageReader.cpp.
References creaImageIO::MultiThreadImageReader::ImageToLoad::GetFilename(), creaImageIO::MultiThreadImageReader::mImages, mMultiThreadImageReader, creaImageIO::MultiThreadImageReader::mQueue, creaImageIO::MultiThreadImageReaderUser::MultiThreadImageReaderEventLock(), creaImageIO::MultiThreadImageReaderUser::MultiThreadImageReaderEventUnlock(), Read(), creaImageIO::IndexedHeap< T, Comparator, Indexer >::remove_top(), creaImageIO::MultiThreadImageReader::ImageToLoad::SetImage(), creaImageIO::MultiThreadImageReader::SignalImageRead(), creaImageIO::IndexedHeap< T, Comparator, Indexer >::size(), and creaImageIO::MultiThreadImageReaderUser::ThreadedReaderStarted.
{
// std::cout << "### Thread "<<GetCurrentId()<<"::Entry()"
// << std::endl;
mMultiThreadImageReader->MultiThreadImageReaderSendEvent
("",
MultiThreadImageReaderUser::ThreadedReaderStarted,
0);
// While was not deleted
while (!TestDestroy())
{
//std::cout << "### Thread "<<GetCurrentId()<<" still alive" << std::endl;
// Lock the mutex
mMultiThreadImageReader->MultiThreadImageReaderEventLock();
//mMutex.Lock();
// If image in queue
if (mMultiThreadImageReader->mQueue.size()>0)
{
MultiThreadImageReader::ImageToLoadPtr i =
mMultiThreadImageReader->mQueue.remove_top();
mMultiThreadImageReader->MultiThreadImageReaderEventUnlock();
//mMutex.Unlock();
// std::cout << "### Thread "<<GetCurrentId()<<" : reading '"
// << i->GetFilename() << "'" << std::endl;
// Do the job
vtkImageData* im = Read(i->GetFilename());
// Store it in the map
mMultiThreadImageReader->MultiThreadImageReaderEventLock();
//mMutex.Lock();
MultiThreadImageReader::ImageToLoad itl(0,i->GetFilename());
MultiThreadImageReader::ImageMapType::iterator it =
mMultiThreadImageReader->mImages.find(&itl);
MultiThreadImageReader::ImageToLoadPtr
pitl = const_cast<MultiThreadImageReader::ImageToLoadPtr>
(it->first);
pitl->SetImage(im);
mMultiThreadImageReader->SignalImageRead(pitl,true);//i->GetFilename());
mMultiThreadImageReader->MultiThreadImageReaderEventUnlock(); //mMutex.Unlock();
// std::cout << "### Thread "<<GetCurrentId()<<" : reading '"
// << i->GetFilename() << "' : DONE" << std::endl;
}
else
{
mMultiThreadImageReader->MultiThreadImageReaderEventUnlock();
//mMutex.Unlock();
// Wait a little to avoid blocking
Sleep(10);
}
};
// std::cout << "### Thread "<<GetCurrentId()<<" stopping"
// << std::endl;
return 0;
}

| void* creaImageIO::ThreadedImageReader::Entry | ( | ) |
| void creaImageIO::ThreadedImageReader::OnExit | ( | ) |
| void creaImageIO::ThreadedImageReader::OnExit | ( | ) |
Definition at line 628 of file creaImageIOMultiThreadImageReader.cpp.
References mMultiThreadImageReader, and creaImageIO::MultiThreadImageReaderUser::ThreadedReaderStopped.
{
mMultiThreadImageReader->MultiThreadImageReaderSendEvent
("",
MultiThreadImageReaderUser::ThreadedReaderStopped,
0);
}
| vtkImageData * creaImageIO::ThreadedImageReader::Read | ( | const std::string & | filename | ) |
Definition at line 638 of file creaImageIOMultiThreadImageReader.cpp.
References mReader, and creaImageIO::ImageReader::ReadImage().
Referenced by Entry().
{
return mReader.ReadImage(filename);
}


| vtkImageData* creaImageIO::ThreadedImageReader::Read | ( | const std::string & | filename | ) |
deleter [friend] |
Definition at line 45 of file creaImageIOMultiThreadImageReader.cpp.
Definition at line 50 of file creaImageIOMultiThreadImageReader.cpp.
Definition at line 49 of file creaImageIOMultiThreadImageReader.cpp.
Referenced by Read().
1.7.1