#include <user_scheduler.hpp>
Public Member Functions | |
| bool | try_executing_one () | 
| Effects: try to execute one task.  More... | |
| user_scheduler () | |
| user_scheduler is not copyable.  More... | |
| ~user_scheduler () | |
| Effects: Destroys the thread pool.  More... | |
| void | loop () | 
| loop  More... | |
| void | close () | 
Effects: close the user_scheduler for submissions.  More... | |
| bool | closed () | 
| Returns: whether the pool is closed for submissions.  More... | |
| void | submit (void(*closure)()) | 
Requires: Closure is a model of Callable(void()) and a model of CopyConstructible/MoveConstructible.  More... | |
| template<typename Closure > | |
| void | submit (BOOST_THREAD_RV_REF(Closure) closure) | 
| template<typename Pred > | |
| bool | reschedule_until (Pred const &pred) | 
| Requires: This must be called from an scheduled task.  More... | |
| void | run_queued_closures () | 
| run queued closures  More... | |
      
  | 
  inline | 
user_scheduler is not copyable.
Effects: creates a thread pool that runs closures using one of its closure-executing methods.
Throws: Whatever exception is thrown while initializing the needed resources.
      
  | 
  inline | 
Effects: Destroys the thread pool.
Synchronization: The completion of all the closures happen before the completion of the user_scheduler destructor. 
References close().
      
  | 
  inline | 
Effects: close the user_scheduler for submissions. 
The loop will work until there is no more closures to run.
References boost::sync_queue< ValueType >::close().
Referenced by ~user_scheduler().
      
  | 
  inline | 
Returns: whether the pool is closed for submissions.
References boost::sync_queue< ValueType >::closed().
      
  | 
  inline | 
loop
      
  | 
  inline | 
Requires: This must be called from an scheduled task.
Effects: reschedule functions until pred()
References try_executing_one().
      
  | 
  inline | 
run queued closures
References boost::sync_queue< ValueType >::empty(), and boost::sync_queue< ValueType >::underlying_queue().
      
  | 
  inline | 
Requires: Closure is a model of Callable(void()) and a model of CopyConstructible/MoveConstructible. 
Effects: The specified closure will be scheduled for execution at some point in the future. If invoked closure throws an exception the user_scheduler will call std::terminate, as is the case with threads.
Synchronization: completion of closure on a particular thread happens before destruction of thread's thread local variables.
Throws: sync_queue_is_closed if the thread pool is closed. Whatever exception that can be throw while storing the closure. 
References boost::move(), and boost::sync_queue< ValueType >::push_back().
      
  | 
  inline | 
References boost::move(), and boost::sync_queue< ValueType >::push_back().
      
  | 
  inline | 
Effects: try to execute one task.
Returns: whether a task has been executed. Throws: whatever the current task constructor throws or the task() throws.
References boost::exception, boost::sinks::event_log::success, and boost::sync_queue< ValueType >::try_pull_front().
Referenced by reschedule_until().