pion
5.0.6
|
#include <scheduler.hpp>
Inherits pion::multi_thread_scheduler.
Classes | |
struct | service_pair_type |
typedef for a pair object where first is an IO service and second is a deadline timer More... | |
Public Member Functions | |
one_to_one_scheduler (void) | |
constructs a new one_to_one_scheduler | |
virtual | ~one_to_one_scheduler () |
virtual destructor | |
virtual boost::asio::io_service & | get_io_service (void) |
returns an async I/O service used to schedule work | |
virtual boost::asio::io_service & | get_io_service (boost::uint32_t n) |
virtual void | startup (void) |
Starts the thread scheduler (this is called automatically when necessary) | |
![]() | |
multi_thread_scheduler (void) | |
constructs a new single_service_scheduler | |
virtual | ~multi_thread_scheduler () |
virtual destructor | |
![]() | |
scheduler (void) | |
constructs a new scheduler | |
virtual | ~scheduler () |
virtual destructor | |
virtual void | shutdown (void) |
Stops the thread scheduler (this is called automatically when the program exits) | |
void | join (void) |
the calling thread will sleep until the scheduler has stopped | |
void | add_active_user (void) |
void | remove_active_user (void) |
unregisters an active user with the thread scheduler | |
bool | is_running (void) const |
returns true if the scheduler is running | |
void | set_num_threads (const boost::uint32_t n) |
sets the number of threads to be used (these are shared by all servers) | |
boost::uint32_t | get_num_threads (void) const |
returns the number of threads currently in use | |
void | set_logger (logger log_ptr) |
sets the logger to be used | |
logger | get_logger (void) |
returns the logger currently in use | |
virtual void | post (boost::function0< void > work_func) |
void | keep_running (boost::asio::io_service &my_service, boost::asio::deadline_timer &my_timer) |
void | process_service_work (boost::asio::io_service &service) |
processes work passed to the asio service & handles uncaught exceptions | |
Protected Types | |
typedef std::vector< boost::shared_ptr< service_pair_type > > | service_pool_type |
typedef for a pool of IO services | |
![]() | |
typedef std::vector< boost::shared_ptr< boost::thread > > | ThreadPool |
typedef for a pool of worker threads | |
Protected Member Functions | |
virtual void | stop_services (void) |
stops all services used to schedule work | |
virtual void | finish_services (void) |
finishes all services used to schedule work | |
![]() | |
virtual void | stop_threads (void) |
stops all threads used to perform work | |
virtual void | finish_threads (void) |
finishes all threads used to perform work | |
Protected Attributes | |
service_pool_type | m_service_pool |
pool of IO services used to schedule work | |
boost::uint32_t | m_next_service |
the next service to use for scheduling work | |
![]() | |
ThreadPool | m_thread_pool |
pool of threads used to perform work | |
![]() | |
boost::mutex | m_mutex |
mutex to make class thread-safe | |
logger | m_logger |
primary logging interface used by this class | |
boost::condition | m_no_more_active_users |
condition triggered when there are no more active users | |
boost::condition | m_scheduler_has_stopped |
condition triggered when the scheduler has stopped | |
boost::uint32_t | m_num_threads |
total number of worker threads in the pool | |
boost::uint32_t | m_active_users |
the scheduler will not shutdown until there are no more active users | |
bool | m_is_running |
true if the thread scheduler is running | |
Additional Inherited Members | |
![]() | |
static void | sleep (boost::uint32_t sleep_sec, boost::uint32_t sleep_nsec) |
template<typename ConditionType , typename LockType > | |
static void | sleep (ConditionType &wakeup_condition, LockType &wakeup_lock, boost::uint32_t sleep_sec, boost::uint32_t sleep_nsec) |
![]() | |
static boost::system_time | get_wakeup_time (boost::uint32_t sleep_sec, boost::uint32_t sleep_nsec) |
![]() | |
static const boost::uint32_t | DEFAULT_NUM_THREADS = 8 |
default number of worker threads in the thread pool | |
static const boost::uint32_t | NSEC_IN_SECOND = 1000000000 |
number of nanoseconds in one full second (10 ^ 9) | |
static const boost::uint32_t | MICROSEC_IN_SECOND = 1000000 |
number of microseconds in one full second (10 ^ 6) | |
static const boost::uint32_t | KEEP_RUNNING_TIMER_SECONDS = 5 |
number of seconds a timer should wait for to keep the IO services running | |
one_to_one_scheduler: uses a single IO service for each thread
Definition at line 286 of file scheduler.hpp.
|
inlinevirtual |
returns an async I/O service used to schedule work (provides direct access to avoid locking when possible)
n | integer number representing the service object |
Definition at line 318 of file scheduler.hpp.