SObjectizer  5.5
Classes | Namespaces | Typedefs | Enumerations
reuse/work_thread/work_thread.hpp File Reference

Working thread for dispatchers. More...

#include <atomic>
#include <condition_variable>
#include <deque>
#include <memory>
#include <mutex>
#include <thread>
#include <utility>
#include <so_5/declspec.hpp>
#include <so_5/current_thread_id.hpp>
#include <so_5/event_queue.hpp>
#include <so_5/disp/mpsc_queue_traits/pub.hpp>
#include <so_5/stats/work_thread_activity.hpp>
#include <so_5/stats/impl/activity_tracking.hpp>
#include <so_5/impl/thread_join_stuff.hpp>

Go to the source code of this file.

Classes

struct  so_5::disp::reuse::work_thread::demand_queue_details::common_data_t
 Common data for all implementations of demand_queue. More...
 
class  so_5::disp::reuse::work_thread::demand_queue_details::no_activity_tracking_impl_t
 A part of demand queue implementation for the case when activity tracking is not used. More...
 
class  so_5::disp::reuse::work_thread::demand_queue_details::with_activity_tracking_impl_t
 A part of demand queue implementation for the case when activity tracking is used. More...
 
class  so_5::disp::reuse::work_thread::demand_queue_details::queue_template_t< Impl >
 Implementation of demand_queue in form of a template. More...
 
struct  so_5::disp::reuse::work_thread::details::common_data_t< Demand_Queue >
 Common data for all work thread implementations. More...
 
class  so_5::disp::reuse::work_thread::details::no_activity_tracking_impl_t
 Part of implementation of work thread without activity tracking. More...
 
class  so_5::disp::reuse::work_thread::details::activity_tracking_impl_t
 Part of implementation of work thread with activity tracking. More...
 
class  so_5::disp::reuse::work_thread::details::work_thread_template_t< Impl >
 Implementation of work thread in form of template. More...
 

Namespaces

 so_5
 Public part of message limit implementation.
 
 so_5::disp
 Event dispatchers.
 
 so_5::disp::reuse
 Reusable components for dispatchers.
 
 so_5::disp::reuse::work_thread
 Implemetation details of dispatcher's working thread.
 
 so_5::disp::reuse::work_thread::demand_queue_details
 
 so_5::disp::reuse::work_thread::details
 

Typedefs

using so_5::disp::reuse::work_thread::demand_container_t = std::deque< execution_demand_t >
 Typedef for demand's container. More...
 
using so_5::disp::reuse::work_thread::demands_counter_t = std::atomic< std::size_t >
 Typedef for atomic demands counter. More...
 
using so_5::disp::reuse::work_thread::demand_queue_no_activity_tracking_t = demand_queue_details::queue_template_t< demand_queue_details::no_activity_tracking_impl_t >
 An alias for demand_queue without activity tracking. More...
 
using so_5::disp::reuse::work_thread::demand_queue_with_activity_tracking_t = demand_queue_details::queue_template_t< demand_queue_details::with_activity_tracking_impl_t >
 An alias for demand_queue with activity tracking. More...
 
using so_5::disp::reuse::work_thread::work_thread_no_activity_tracking_t = details::work_thread_template_t< details::no_activity_tracking_impl_t >
 Type of work thread without activity tracking. More...
 
using so_5::disp::reuse::work_thread::work_thread_with_activity_tracking_t = details::work_thread_template_t< details::activity_tracking_impl_t >
 Working thread with activity tracking. More...
 

Enumerations

enum  so_5::disp::reuse::work_thread::extraction_result_t { so_5::disp::reuse::work_thread::extraction_result_t::demand_extracted = 1, so_5::disp::reuse::work_thread::extraction_result_t::shutting_down = 2, so_5::disp::reuse::work_thread::extraction_result_t::no_demands = 3 }
 Type for result of demand extraction. More...
 
enum  so_5::disp::reuse::work_thread::details::status_t : int { so_5::disp::reuse::work_thread::details::status_t::stopped = 0, so_5::disp::reuse::work_thread::details::status_t::working = 1 }
 Thread status flag. More...
 

Detailed Description

Working thread for dispatchers.