3 #include <SharedSubTaskCompletionHandler.h>
4 #include <SharedSubTask.h>
6 #include <boost/thread.hpp>
9 #include <unordered_map>
12 using std::unordered_map;
47 unordered_map<size_t, std::shared_ptr<SharedSubTask>>
subTasks;
79 virtual void start(std::shared_ptr<SharedSubTask> subTask);
88 virtual void startThread(std::shared_ptr<SharedSubTask> subTask);
Interface declaring behaviors that must be implemented by any class capable of handling completion of...
Definition: SharedSubTaskCompletionHandler.h:13
Class providing core implementation of a shared task sequencer. It is a sequencer which launches shar...
Definition: SharedTaskSequencer.h:23
unordered_map< size_t, std::shared_ptr< SharedSubTask > > subTasks
The collection of running shared sub-tasks.
Definition: SharedTaskSequencer.h:47
SharedTaskSequencer(size_t const maxThreads)
Default constructor for shared task sequencer.
Definition: SharedTaskSequencer.h:64
size_t nextSharedSubTaskKey
Key of next shared sub-task to be inserted.
Definition: SharedTaskSequencer.h:40
virtual void start(std::shared_ptr< SharedSubTask > subTask)
Start given shared sub-task.
Definition: SharedTaskSequencer.cpp:6
boost::condition_variable condvar
Condition variable to handle concurrent start of sub-tasks.
Definition: SharedTaskSequencer.h:55
virtual void joinAll()
Wait until all pending sub-tasks have been finished.
Definition: SharedTaskSequencer.cpp:45
size_t maxThreads
Maximum number of supported concurrent threads.
Definition: SharedTaskSequencer.h:32
size_t availableThreads
How many threads there are available to compute a task.
Definition: SharedTaskSequencer.h:36
virtual void startThread(std::shared_ptr< SharedSubTask > subTask)
Assist the start method to start a shared sub-task by wrapping it into a SmartSharedFunctorContainer.
Definition: SharedTaskSequencer.cpp:25
void onSharedSubTaskCompletion(size_t const key) override
Handle completion of each shared sub-task.
Definition: SharedTaskSequencer.cpp:34
boost::mutex mtx
Mutex to handle concurrent start of sub-tasks.
Definition: SharedTaskSequencer.h:51