Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::ThreadedTaskScheduler Class Referenceabstract

#include <tasks.h>

Inheritance diagram for Realm::ThreadedTaskScheduler:
Collaboration diagram for Realm::ThreadedTaskScheduler:

Classes

class  WorkCounter
 
class  WorkCounterUpdater
 

Public Member Functions

 ThreadedTaskScheduler (void)
 
virtual ~ThreadedTaskScheduler (void)
 
virtual void add_task_queue (TaskQueue *queue)
 
virtual void remove_task_queue (TaskQueue *queue)
 
virtual void configure_bgworker (BackgroundWorkManager *manager, long long max_timeslice, int numa_domain)
 
void add_task_context (const TaskContextManager *_manager)
 
virtual void start (void)=0
 
virtual void shutdown (void)=0
 
virtual void thread_blocking (Thread *thread)
 
virtual void thread_ready (Thread *thread)
 
virtual void set_thread_priority (Thread *thread, int new_priority)
 
void add_internal_task (InternalTask *itask)
 
void scheduler_loop (void)
 
void scheduler_loop_wlock (void)
 
- Public Member Functions inherited from Realm::ThreadScheduler
virtual ~ThreadScheduler (void)
 
virtual void thread_starting (Thread *thread)=0
 
virtual void thread_terminating (Thread *thread)=0
 

Public Attributes

bool cfg_reuse_workers
 
int cfg_max_idle_workers
 
int cfg_min_active_workers
 
int cfg_max_active_workers
 

Protected Types

typedef PriorityQueue< Thread *, DummyLockResumableQueue
 

Protected Member Functions

virtual bool execute_task (Task *task)=0
 
virtual void execute_internal_task (InternalTask *task)=0
 
virtual Threadworker_create (bool make_active)=0
 
virtual void worker_sleep (Thread *switch_to)=0
 
virtual void worker_wake (Thread *to_wake)=0
 
virtual void worker_terminate (Thread *switch_to)=0
 
Taskget_best_ready_task (int &task_priority)
 
void update_worker_count (int active_delta, int unassigned_delta, bool check=true)
 
virtual void wait_for_work (uint64_t old_work_counter)
 
- Protected Member Functions inherited from Realm::ThreadScheduler
Thread::State update_thread_state (Thread *thread, Thread::State new_state)
 
bool try_update_thread_state (Thread *thread, Thread::State old_state, Thread::State new_state)
 

Protected Attributes

FIFOMutex lock
 
std::vector< TaskQueue * > task_queues
 
std::vector< Thread * > idle_workers
 
std::set< Thread * > blocked_workers
 
std::set< Thread * > spinning_workers
 
std::vector< const TaskContextManager * > context_managers
 
InternalTask::TaskList internal_tasks
 
ResumableQueue resumable_workers
 
std::map< Thread *, int > worker_priorities
 
atomic< bool > shutdown_flag
 
int active_worker_count
 
int unassigned_worker_count
 
WorkCounter work_counter
 
WorkCounterUpdater< TaskQueuewcu_task_queues
 
WorkCounterUpdater< ResumableQueuewcu_resume_queue
 
BackgroundWorkManager::Worker bgworker
 
atomic< bool > bgworker_interrupt
 
long long max_bgwork_timeslice
 

Member Typedef Documentation

◆ ResumableQueue

Constructor & Destructor Documentation

◆ ThreadedTaskScheduler()

Realm::ThreadedTaskScheduler::ThreadedTaskScheduler ( void  )

◆ ~ThreadedTaskScheduler()

virtual Realm::ThreadedTaskScheduler::~ThreadedTaskScheduler ( void  )
virtual

Member Function Documentation

◆ add_internal_task()

void Realm::ThreadedTaskScheduler::add_internal_task ( InternalTask itask)

◆ add_task_context()

void Realm::ThreadedTaskScheduler::add_task_context ( const TaskContextManager _manager)

◆ add_task_queue()

virtual void Realm::ThreadedTaskScheduler::add_task_queue ( TaskQueue queue)
virtual

◆ configure_bgworker()

virtual void Realm::ThreadedTaskScheduler::configure_bgworker ( BackgroundWorkManager manager,
long long  max_timeslice,
int  numa_domain 
)
virtual

◆ execute_internal_task()

virtual void Realm::ThreadedTaskScheduler::execute_internal_task ( InternalTask task)
protectedpure virtual

◆ execute_task()

virtual bool Realm::ThreadedTaskScheduler::execute_task ( Task task)
protectedpure virtual

◆ get_best_ready_task()

Task * Realm::ThreadedTaskScheduler::get_best_ready_task ( int &  task_priority)
protected

◆ remove_task_queue()

virtual void Realm::ThreadedTaskScheduler::remove_task_queue ( TaskQueue queue)
virtual

◆ scheduler_loop()

void Realm::ThreadedTaskScheduler::scheduler_loop ( void  )

◆ scheduler_loop_wlock()

void Realm::ThreadedTaskScheduler::scheduler_loop_wlock ( void  )

◆ set_thread_priority()

virtual void Realm::ThreadedTaskScheduler::set_thread_priority ( Thread thread,
int  new_priority 
)
virtual

◆ shutdown()

virtual void Realm::ThreadedTaskScheduler::shutdown ( void  )
pure virtual

◆ start()

virtual void Realm::ThreadedTaskScheduler::start ( void  )
pure virtual

◆ thread_blocking()

virtual void Realm::ThreadedTaskScheduler::thread_blocking ( Thread thread)
virtual

◆ thread_ready()

virtual void Realm::ThreadedTaskScheduler::thread_ready ( Thread thread)
virtual

◆ update_worker_count()

void Realm::ThreadedTaskScheduler::update_worker_count ( int  active_delta,
int  unassigned_delta,
bool  check = true 
)
protected

◆ wait_for_work()

virtual void Realm::ThreadedTaskScheduler::wait_for_work ( uint64_t  old_work_counter)
protectedvirtual

◆ worker_create()

virtual Thread * Realm::ThreadedTaskScheduler::worker_create ( bool  make_active)
protectedpure virtual

◆ worker_sleep()

virtual void Realm::ThreadedTaskScheduler::worker_sleep ( Thread switch_to)
protectedpure virtual

◆ worker_terminate()

virtual void Realm::ThreadedTaskScheduler::worker_terminate ( Thread switch_to)
protectedpure virtual

◆ worker_wake()

virtual void Realm::ThreadedTaskScheduler::worker_wake ( Thread to_wake)
protectedpure virtual

Member Data Documentation

◆ active_worker_count

int Realm::ThreadedTaskScheduler::active_worker_count
protected

◆ bgworker

BackgroundWorkManager::Worker Realm::ThreadedTaskScheduler::bgworker
protected

◆ bgworker_interrupt

atomic<bool> Realm::ThreadedTaskScheduler::bgworker_interrupt
protected

◆ blocked_workers

std::set<Thread *> Realm::ThreadedTaskScheduler::blocked_workers
protected

◆ cfg_max_active_workers

int Realm::ThreadedTaskScheduler::cfg_max_active_workers

◆ cfg_max_idle_workers

int Realm::ThreadedTaskScheduler::cfg_max_idle_workers

◆ cfg_min_active_workers

int Realm::ThreadedTaskScheduler::cfg_min_active_workers

◆ cfg_reuse_workers

bool Realm::ThreadedTaskScheduler::cfg_reuse_workers

◆ context_managers

std::vector<const TaskContextManager *> Realm::ThreadedTaskScheduler::context_managers
protected

◆ idle_workers

std::vector<Thread *> Realm::ThreadedTaskScheduler::idle_workers
protected

◆ internal_tasks

InternalTask::TaskList Realm::ThreadedTaskScheduler::internal_tasks
protected

◆ lock

FIFOMutex Realm::ThreadedTaskScheduler::lock
protected

◆ max_bgwork_timeslice

long long Realm::ThreadedTaskScheduler::max_bgwork_timeslice
protected

◆ resumable_workers

ResumableQueue Realm::ThreadedTaskScheduler::resumable_workers
protected

◆ shutdown_flag

atomic<bool> Realm::ThreadedTaskScheduler::shutdown_flag
protected

◆ spinning_workers

std::set<Thread *> Realm::ThreadedTaskScheduler::spinning_workers
protected

◆ task_queues

std::vector<TaskQueue *> Realm::ThreadedTaskScheduler::task_queues
protected

◆ unassigned_worker_count

int Realm::ThreadedTaskScheduler::unassigned_worker_count
protected

◆ wcu_resume_queue

WorkCounterUpdater<ResumableQueue> Realm::ThreadedTaskScheduler::wcu_resume_queue
protected

◆ wcu_task_queues

WorkCounterUpdater<TaskQueue> Realm::ThreadedTaskScheduler::wcu_task_queues
protected

◆ work_counter

WorkCounter Realm::ThreadedTaskScheduler::work_counter
protected

◆ worker_priorities

std::map<Thread *, int> Realm::ThreadedTaskScheduler::worker_priorities
protected

The documentation for this class was generated from the following file: