CAF  0.17.3
Public Types | Public Member Functions | List of all members
caf::intrusive::wdrr_dynamic_multiplexed_queue< Policy > Class Template Reference

A work queue that internally multiplexes any number of DRR queues. More...

#include <wdrr_dynamic_multiplexed_queue.hpp>

Public Types

using policy_type = Policy
 
using deficit_type = typename policy_type::deficit_type
 
using mapped_type = typename policy_type::mapped_type
 
using key_type = typename policy_type::key_type
 
using pointer = mapped_type *
 
using unique_pointer = typename policy_type::unique_pointer
 
using task_size_type = typename policy_type::task_size_type
 
using queue_map_type = typename policy_type::queue_map_type
 
using queue_type = typename queue_map_type::mapped_type
 

Public Member Functions

template<class... Ps>
 wdrr_dynamic_multiplexed_queue (policy_type p)
 
policy_type & policy () noexcept
 
const policy_type & policy () const noexcept
 
bool push_back (mapped_type *ptr) noexcept
 
bool push_back (unique_pointer ptr) noexcept
 
template<class... Ts>
bool emplace_back (Ts &&... xs)
 
void inc_deficit (deficit_type x) noexcept
 
template<class F >
new_round_result new_round (deficit_type quantum, F &f)
 Run a new round with quantum, dispatching all tasks to consumer. More...
 
void cleanup ()
 Erases all keys previously marked via erase_later.
 
void erase_later (key_type k)
 Marks the key k for erasing from the map later.
 
pointer peek () noexcept
 
template<class F >
void peek_all (F f) const
 Applies f to each element in the queue.
 
bool empty () const noexcept
 Returns true if all queues are empty, false otherwise.
 
void flush_cache () noexcept
 
task_size_type total_task_size () const noexcept
 
queue_map_type & queues () noexcept
 Returns the tuple containing all nested queues.
 
const queue_map_type & queues () const noexcept
 Returns the tuple containing all nested queues.
 
void lifo_append (pointer ptr) noexcept
 
void stop_lifo_append () noexcept
 

Detailed Description

template<class Policy>
class caf::intrusive::wdrr_dynamic_multiplexed_queue< Policy >

A work queue that internally multiplexes any number of DRR queues.

Member Function Documentation

◆ new_round()

template<class Policy >
template<class F >
new_round_result caf::intrusive::wdrr_dynamic_multiplexed_queue< Policy >::new_round ( deficit_type  quantum,
F &  f 
)

Run a new round with quantum, dispatching all tasks to consumer.

Returns
true if at least one item was consumed, false otherwise.

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