Helios++
Helios software for LiDAR simulations
PulseThreadPoolInterface.h
1 #pragma once
2 
3 #include <util/threadpool/TaskDropper.h>
4 #include <scanner/detector/PulseTask.h>
5 #include <noise/RandomnessGenerator.h>
6 #include <noise/NoiseSource.h>
7 
8 #include <vector>
9 
19 public:
20  // *** CONSTRUCTION / DESTRUCTION *** //
21  // ************************************ //
22  virtual ~PulseThreadPoolInterface() = default;
23 
24  // *** PULSE THREAD POOL INTERFACE *** //
25  // ************************************ //
32  virtual void run_pulse_task(
34  PulseTask,
36  std::vector<std::vector<double>>&,
40  > &dropper
41  ) = 0;
54  virtual bool try_run_pulse_task(
56  PulseTask,
58  std::vector<std::vector<double>>&,
62  > &dropper
63  ) = 0;
67  virtual void join() = 0;
68 
69 };
Pulse task interface.
Definition: PulseTask.h:13
Interface for thread pools supporting pulse tasks.
Definition: PulseThreadPoolInterface.h:18
virtual void run_pulse_task(TaskDropper< PulseTask, PulseThreadPoolInterface, std::vector< std::vector< double >> &, RandomnessGenerator< double > &, RandomnessGenerator< double > &, NoiseSource< double > & > &dropper)=0
Compute a chunk of pulse tasks in parallel, blocking fashion.
virtual void join()=0
Block until pending parallel executions have finished.
virtual bool try_run_pulse_task(TaskDropper< PulseTask, PulseThreadPoolInterface, std::vector< std::vector< double >> &, RandomnessGenerator< double > &, RandomnessGenerator< double > &, NoiseSource< double > & > &dropper)=0
Compute a chunk of pulse tasks in parallel, non-blocking fashion.
Class which handles tasks dropping. It is, executing and then removing each task when dropping.
Definition: TaskDropper.h:22