SourceXtractorPlusPlus
0.11
Please provide a description of the project.
|
#include <MultithreadedMeasurement.h>
Public Types | |
using | SourceToRowConverter = std::function< Euclid::Table::Row(const SourceInterface &)> |
Public Member Functions | |
MultithreadedMeasurement (SourceToRowConverter source_to_row, int worker_threads_nb) | |
void | handleMessage (const std::shared_ptr< SourceGroupInterface > &source_group) override |
void | startThreads () override |
void | waitForThreads () override |
![]() | |
virtual | ~Measurement ()=default |
![]() | |
virtual | ~Observer ()=default |
![]() | |
virtual | ~Observable ()=default |
Destructor. More... | |
virtual void | addObserver (std::shared_ptr< Observer< std::shared_ptr< SourceGroupInterface > >> observer) |
Adds an Observer that will be notified when notify Observers is called. More... | |
virtual void | removeObserver (std::shared_ptr< Observer< std::shared_ptr< SourceGroupInterface > >> observer) |
Removes a previously added Observer from the list of Observers to notify. More... | |
Static Public Attributes | |
static std::recursive_mutex | g_global_mutex |
Private Member Functions | |
void | workerThreadLoop () |
void | outputThreadLoop () |
Static Private Member Functions | |
static void | workerThreadStatic (MultithreadedMeasurement *measurement, int id) |
static void | outputThreadStatic (MultithreadedMeasurement *measurement, int id) |
Private Attributes | |
SourceToRowConverter | m_source_to_row |
std::shared_ptr< std::thread > | m_output_thread |
int | m_worker_threads_nb |
std::vector< std::shared_ptr< std::thread > > | m_worker_threads |
int | m_active_threads |
std::mutex | m_active_threads_mutex |
int | m_group_counter |
std::atomic_bool | m_input_done |
std::atomic_bool | m_abort_raised |
std::condition_variable | m_new_input |
std::list< std::pair< int, std::shared_ptr< SourceGroupInterface > > > | m_input_queue |
std::mutex | m_input_queue_mutex |
std::condition_variable | m_new_output |
std::list< std::pair< int, std::shared_ptr< SourceGroupInterface > > > | m_output_queue |
std::mutex | m_output_queue_mutex |
Additional Inherited Members | |
![]() | |
void | notifyObservers (const std::shared_ptr< SourceGroupInterface > &message) const |
Definition at line 37 of file MultithreadedMeasurement.h.
using SourceXtractor::MultithreadedMeasurement::SourceToRowConverter = std::function<Euclid::Table::Row(const SourceInterface&)> |
Definition at line 40 of file MultithreadedMeasurement.h.
|
inline |
Definition at line 41 of file MultithreadedMeasurement.h.
|
overridevirtual |
Implements SourceXtractor::Observer< std::shared_ptr< SourceGroupInterface > >.
Definition at line 69 of file MultithreadedMeasurement.cpp.
References m_group_counter, m_input_queue, m_input_queue_mutex, m_new_input, and std::condition_variable::notify_one().
|
private |
Definition at line 159 of file MultithreadedMeasurement.cpp.
References m_active_threads, m_active_threads_mutex, m_new_output, m_output_queue, m_output_queue_mutex, SourceXtractor::Observable< std::shared_ptr< SourceGroupInterface > >::notifyObservers(), and std::condition_variable::wait_for().
Referenced by outputThreadStatic().
|
staticprivate |
Definition at line 100 of file MultithreadedMeasurement.cpp.
References Elements::Logging::debug(), e, Elements::Logging::fatal(), SourceXtractor::logger, m_abort_raised, and outputThreadLoop().
Referenced by startThreads().
|
overridevirtual |
Implements SourceXtractor::Measurement.
Definition at line 39 of file MultithreadedMeasurement.cpp.
References std::vector< T >::emplace_back(), m_active_threads, m_output_thread, m_worker_threads, m_worker_threads_nb, outputThreadStatic(), and workerThreadStatic().
|
overridevirtual |
Implements SourceXtractor::Measurement.
Definition at line 50 of file MultithreadedMeasurement.cpp.
References Elements::Logging::debug(), std::thread::join(), SourceXtractor::logger, m_input_done, m_input_queue_mutex, m_new_input, m_output_thread, m_worker_threads, m_worker_threads_nb, and std::condition_variable::notify_all().
|
private |
Definition at line 116 of file MultithreadedMeasurement.cpp.
References m_active_threads, m_active_threads_mutex, m_input_done, m_input_queue, m_input_queue_mutex, m_new_input, m_new_output, m_output_queue, m_output_queue_mutex, m_source_to_row, std::condition_variable::notify_one(), and std::condition_variable::wait_for().
Referenced by workerThreadStatic().
|
staticprivate |
Definition at line 84 of file MultithreadedMeasurement.cpp.
References Elements::Logging::debug(), e, Elements::Logging::fatal(), SourceXtractor::logger, m_abort_raised, and workerThreadLoop().
Referenced by startThreads().
|
static |
Definition at line 54 of file MultithreadedMeasurement.h.
Referenced by SourceXtractor::DetectionFrameGroupStampTask::computeProperties(), SourceXtractor::FlexibleModelFittingTask::computeProperties(), SourceXtractor::PsfTask::computeProperties(), SourceXtractor::CoreThresholdPartitionTask::computeProperties(), SourceXtractor::SaturateFlagSourceTask::computeProperties(), SourceXtractor::VignetSourceTask::computeProperties(), SourceXtractor::ApertureFlagTask::computeProperties(), SourceXtractor::AperturePhotometryTask::computeProperties(), SourceXtractor::AutoPhotometryFlagTask::computeProperties(), SourceXtractor::AutoPhotometryTask::computeProperties(), SourceXtractor::DetectionFramePixelValuesTask::computeProperties(), SourceXtractor::DetectionFrameSourceStampTask::computeProperties(), SourceXtractor::ExternalFlagTask< Combine >::computeProperties(), SourceXtractor::GrowthCurveTask::computeProperties(), SourceXtractor::KronRadiusTask::computeProperties(), SourceXtractor::FlexibleModelFittingTask::createImageCopy(), SourceXtractor::FlexibleModelFittingTask::createWeightImage(), SourceXtractor::Lutz::labelImage(), SourceXtractor::MultiThresholdPartitionStep::partition(), and SourceXtractor::CoreThresholdPartitionStep::partition().
|
private |
Definition at line 73 of file MultithreadedMeasurement.h.
Referenced by outputThreadStatic(), and workerThreadStatic().
|
private |
Definition at line 69 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), startThreads(), and workerThreadLoop().
|
private |
Definition at line 70 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), and workerThreadLoop().
|
private |
Definition at line 72 of file MultithreadedMeasurement.h.
Referenced by handleMessage().
|
private |
Definition at line 73 of file MultithreadedMeasurement.h.
Referenced by waitForThreads(), and workerThreadLoop().
|
private |
Definition at line 75 of file MultithreadedMeasurement.h.
Referenced by handleMessage(), and workerThreadLoop().
|
private |
Definition at line 76 of file MultithreadedMeasurement.h.
Referenced by handleMessage(), waitForThreads(), and workerThreadLoop().
|
private |
Definition at line 74 of file MultithreadedMeasurement.h.
Referenced by handleMessage(), waitForThreads(), and workerThreadLoop().
|
private |
Definition at line 78 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), and workerThreadLoop().
|
private |
Definition at line 79 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), and workerThreadLoop().
|
private |
Definition at line 80 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), and workerThreadLoop().
|
private |
Definition at line 64 of file MultithreadedMeasurement.h.
Referenced by startThreads(), and waitForThreads().
|
private |
Definition at line 62 of file MultithreadedMeasurement.h.
Referenced by workerThreadLoop().
|
private |
Definition at line 67 of file MultithreadedMeasurement.h.
Referenced by startThreads(), and waitForThreads().
|
private |
Definition at line 66 of file MultithreadedMeasurement.h.
Referenced by startThreads(), and waitForThreads().