|
SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
|
#include <MultithreadedMeasurement.h>


Public Types | |
| using | SourceToRowConverter = std::function<Euclid::Table::Row(const SourceInterface&)> |
Public Member Functions | |
| MultithreadedMeasurement (SourceToRowConverter source_to_row, const std::shared_ptr< Euclid::ThreadPool > &thread_pool, unsigned max_queue_size) | |
| ~MultithreadedMeasurement () override | |
| void | receiveSource (std::unique_ptr< SourceGroupInterface > source_group) override |
| void | receiveProcessSignal (const ProcessSourcesEvent &event) override |
| void | startThreads () override |
| void | stopThreads () override |
| void | synchronizeThreads () override |
| Public Member Functions inherited from SourceXtractor::Measurement | |
| ~Measurement () override=default | |
| Public Member Functions inherited from SourceXtractor::PipelineReceiver< SourceGroupInterface > | |
| virtual | ~PipelineReceiver ()=default |
| Public Member Functions inherited from SourceXtractor::PipelineEmitter< SourceGroupInterface > | |
| ~PipelineEmitter () override=default | |
| void | setNextStage (std::shared_ptr< PipelineReceiver< SourceGroupInterface > > next) |
| Public Member Functions inherited from SourceXtractor::Observable< SourceGroupInterface > | |
| virtual | ~Observable ()=default |
| Destructor. | |
| virtual void | addObserver (std::shared_ptr< Observer< SourceGroupInterface > > observer) |
| Adds an Observer that will be notified when notify Observers is called. | |
| virtual void | removeObserver (std::shared_ptr< Observer< SourceGroupInterface > > observer) |
| Removes a previously added Observer from the list of Observers to notify. | |
Private Member Functions | |
| void | outputThreadLoop () |
Static Private Member Functions | |
| static void | outputThreadStatic (MultithreadedMeasurement *measurement) |
Private Attributes | |
| SourceToRowConverter | m_source_to_row |
| std::shared_ptr< Euclid::ThreadPool > | m_thread_pool |
| std::unique_ptr< std::thread > | m_output_thread |
| int | m_group_counter |
| std::atomic_bool | m_input_done |
| std::atomic_bool | m_abort_raised |
| std::condition_variable | m_new_output |
| std::list< std::pair< int, std::unique_ptr< SourceGroupInterface > > > | m_output_queue |
| std::mutex | m_output_queue_mutex |
| Euclid::Semaphore | m_semaphore |
Additional Inherited Members | |
| Protected Member Functions inherited from SourceXtractor::PipelineEmitter< SourceGroupInterface > | |
| void | sendSource (std::unique_ptr< SourceGroupInterface > source) const |
| void | sendProcessSignal (const ProcessSourcesEvent &event) const |
| Protected Member Functions inherited from SourceXtractor::Observable< SourceGroupInterface > | |
| void | notifyObservers (const SourceGroupInterface &message) const |
Definition at line 38 of file MultithreadedMeasurement.h.
| using SourceXtractor::MultithreadedMeasurement::SourceToRowConverter = std::function<Euclid::Table::Row(const SourceInterface&)> |
Definition at line 41 of file MultithreadedMeasurement.h.
|
inline |
Definition at line 42 of file MultithreadedMeasurement.h.
References m_abort_raised, m_group_counter, m_input_done, m_semaphore, m_source_to_row, and m_thread_pool.
Referenced by outputThreadStatic().
|
override |
Definition at line 36 of file MultithreadedMeasurement.cpp.
References m_output_thread.
|
private |
Definition at line 119 of file MultithreadedMeasurement.cpp.
References m_input_done, m_new_output, m_output_queue, m_output_queue_mutex, m_thread_pool, std::move(), and SourceXtractor::PipelineEmitter< SourceGroupInterface >::sendSource().
Referenced by outputThreadStatic().

|
staticprivate |
Definition at line 103 of file MultithreadedMeasurement.cpp.
References Euclid::Configuration::logger, m_abort_raised, MultithreadedMeasurement(), outputThreadLoop(), and std::raise().
Referenced by startThreads().

|
overridevirtual |
Receive a signal to process sources when grouping
| event |
Implements SourceXtractor::PipelineReceiver< SourceGroupInterface >.
Definition at line 141 of file MultithreadedMeasurement.cpp.
References SourceXtractor::PipelineEmitter< SourceGroupInterface >::sendProcessSignal().

|
overridevirtual |
Receive a source from the previous stage. The receiver owns the object.
| source |
Implements SourceXtractor::PipelineReceiver< SourceGroupInterface >.
Definition at line 76 of file MultithreadedMeasurement.cpp.
References m_group_counter, m_new_output, m_output_queue, m_output_queue_mutex, m_source_to_row, m_thread_pool, std::make_shared(), and std::move().

|
overridevirtual |
Implements SourceXtractor::Measurement.
Definition at line 42 of file MultithreadedMeasurement.cpp.
References m_output_thread, Euclid::make_unique(), and outputThreadStatic().

|
overridevirtual |
Implements SourceXtractor::Measurement.
Definition at line 46 of file MultithreadedMeasurement.cpp.
References Euclid::Configuration::logger, m_input_done, m_output_thread, and m_thread_pool.
|
overridevirtual |
Implements SourceXtractor::Measurement.
Definition at line 53 of file MultithreadedMeasurement.cpp.
References Euclid::Configuration::logger, m_output_queue, m_output_queue_mutex, m_thread_pool, and std::this_thread::sleep_for().

|
private |
Definition at line 67 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement(), and outputThreadStatic().
|
private |
Definition at line 66 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement(), and receiveSource().
|
private |
Definition at line 67 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement(), outputThreadLoop(), and stopThreads().
|
private |
Definition at line 69 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), and receiveSource().
|
private |
Definition at line 70 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), receiveSource(), and synchronizeThreads().
|
private |
Definition at line 71 of file MultithreadedMeasurement.h.
Referenced by outputThreadLoop(), receiveSource(), and synchronizeThreads().
|
private |
Definition at line 64 of file MultithreadedMeasurement.h.
Referenced by startThreads(), stopThreads(), and ~MultithreadedMeasurement().
|
private |
Definition at line 72 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement().
|
private |
Definition at line 62 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement(), and receiveSource().
|
private |
Definition at line 63 of file MultithreadedMeasurement.h.
Referenced by MultithreadedMeasurement(), outputThreadLoop(), receiveSource(), stopThreads(), and synchronizeThreads().