35#ifndef NEKTAR_LIBUTILITIES_THREADBOOST_H_
36#define NEKTAR_LIBUTILITIES_THREADBOOST_H_
39#include <boost/thread/barrier.hpp>
51typedef boost::unique_lock<boost::mutex>
Lock;
78 virtual void v_QueueJobs(std::vector<ThreadJob *> &joblist)
override;
85 virtual void v_Wait()
override;
89 virtual void v_Hold()
override;
90 virtual const std::string &
v_GetType()
const override;
131 unsigned int workerNum);
Base class for tasks to be sent to the ThreadManager to run.
Implementation of ThreadManager using Boost threads.
virtual void v_QueueJob(ThreadJob *job) override
boost::mutex m_masterQueueMutex
ThreadWorkerBoost ** m_threadList
virtual const std::string & v_GetType() const override
virtual ~ThreadManagerBoost()
Shuts down threading.
bool * m_threadActiveList
virtual unsigned int v_GetMaxNumWorkers() override
virtual void v_SetChunkSize(unsigned int chnk) override
virtual void v_SetSchedType(SchedType s) override
boost::condition_variable m_masterQueueCondVar
virtual bool v_InThread() override
virtual unsigned int v_GetNumWorkers() override
boost::thread::id m_masterThreadId
const unsigned int m_numThreads
std::queue< ThreadJob * > m_masterQueue
static ThreadManagerSharedPtr Create(unsigned int numT)
Called by the factory method.
ThreadManagerBoost(const ThreadManagerBoost &)
virtual void v_Wait() override
std::map< boost::thread::id, unsigned int > m_threadMap
virtual unsigned int v_GetWorkerNum() override
static std::string className
virtual void v_Hold() override
void SetNumWorkersImpl(const unsigned int num)
virtual void v_SetNumWorkers() override
unsigned int m_numWorkers
virtual void v_QueueJobs(std::vector< ThreadJob * > &joblist) override
boost::barrier * m_barrier
boost::thread ** m_threadThreadList
boost::condition_variable m_masterActiveCondVar
boost::mutex m_masterActiveMutex
The interface class for the controller for worker threads and jobs.
Implementation class for ThreadManagerBoost.
ThreadWorkerBoost(const ThreadWorkerBoost &)
~ThreadWorkerBoost()
Destructor.
unsigned int GetWorkerNum()
Return the index of the worker thread.
void Stop()
A signal to shut down.
std::queue< ThreadJob * > m_workerQueue
void operator()()
This provides the interface that boost::thread uses to start the worker.
unsigned int GetNumToLoad()
ThreadManagerBoost * m_threadManager
SchedType
Identifies the algorithm for scheduling.
std::shared_ptr< ThreadManager > ThreadManagerSharedPtr
boost::unique_lock< boost::mutex > Lock
The above copyright notice and this permission notice shall be included.