Class SequenceProcessorMultithread

Inheritance Relationships

Base Type

Class Documentation

class SequenceProcessorMultithread : public SmartPeak::ProcessorMultithread

Processes injections onto multiple threads of execution

Public Functions

inline SequenceProcessorMultithread(std::vector<InjectionHandler> &injections, std::map<std::string, Filenames> &filenames, const std::vector<std::shared_ptr<RawDataProcessor>> &methods, SequenceProcessorObservable *observable = nullptr)
void spawn_workers(unsigned int n_threads)

Spawn a number of workers equal to the number of threads of execution offered by the CPU

Note

If the API is unable to fetch the required information, only a single thread will be used

virtual void run_processing()

Workers run this function. It implements a loop that runs the following steps:

  • fetch an injection

  • process all methods on it

Workers decide on which injection to work according to an index fetched and incremented atomically (i_).

The loop ends when the worker fetches an index that is out of range.