hpx/schedulers/static_queue_scheduler.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace threads
namespace policies

Typedefs

using default_static_queue_scheduler_terminated_queue = lockfree_fifo
template<typename Mutex = std::mutex, typename PendingQueuing = lockfree_fifo, typename StagedQueuing = lockfree_fifo, typename TerminatedQueuing = default_static_queue_scheduler_terminated_queue>
class static_queue_scheduler : public hpx::threads::policies::local_queue_scheduler<std::mutex, lockfree_fifo, lockfree_fifo, default_static_queue_scheduler_terminated_queue>
#include <static_queue_scheduler.hpp>

The local_queue_scheduler maintains exactly one queue of work items (threads) per OS thread, where this OS thread pulls its next work from.

Public Types

typedef local_queue_scheduler<Mutex, PendingQueuing, StagedQueuing, TerminatedQueuing> base_type

Public Functions

static_queue_scheduler(typename base_type::init_parameter_type const &init, bool deferred_initialization = true)
void set_scheduler_mode(scheduler_mode mode)
bool get_next_thread(std::size_t num_thread, bool, threads::thread_id_ref_type &thrd, bool)

Return the next thread to be executed, return false if none is available

bool wait_or_add_new(std::size_t num_thread, bool running, std::int64_t &idle_loop_count, bool, std::size_t &added)

This is a function which gets called periodically by the thread manager to allow for maintenance tasks to be executed in the scheduler. Returns true if the OS thread calling this function has to be terminated (i.e. no more work has to be done).

Public Static Functions

static std::string get_scheduler_name()