Internal use. More...
#include <callback_queue_manager.h>
| Classes | |
| struct | QueueInfo | 
| struct | ThreadInfo | 
| Public Member Functions | |
| void | addQueue (const CallbackQueuePtr &queue, bool threaded) | 
| void | callbackAdded (const CallbackQueuePtr &queue) | 
| CallbackQueueManager (uint32_t num_worker_threads=0) | |
| Constructor.  More... | |
| uint32_t | getNumWorkerThreads () | 
| void | removeQueue (const CallbackQueuePtr &queue) | 
| void | stop () | 
| ~CallbackQueueManager () | |
| Private Types | |
| typedef boost::unordered_map< CallbackQueue *, QueueInfoPtr > | M_Queue | 
| typedef boost::shared_ptr< QueueInfo > | QueueInfoPtr | 
| typedef std::vector< CallbackQueuePtr > | V_Queue | 
| typedef boost::scoped_array< ThreadInfo > | V_ThreadInfo | 
| Private Member Functions | |
| ThreadInfo * | getSmallestQueue () | 
| void | managerThread () | 
| void | workerThread (ThreadInfo *) | 
| Private Attributes | |
| uint32_t | num_worker_threads_ | 
| M_Queue | queues_ | 
| boost::mutex | queues_mutex_ | 
| bool | running_ | 
| boost::thread_group | tg_ | 
| V_ThreadInfo | thread_info_ | 
| V_Queue | waiting_ | 
| boost::condition_variable | waiting_cond_ | 
| boost::mutex | waiting_mutex_ | 
Internal use.
Manages a set of callback queues, potentially calling callbacks from them concurrently in different threads. Essentially a task manager specialized for callback queues.
Uses 1 manager thread + N worker threads. The manager thread gives work to the worker threads by finding the thread with the fewest pending tasks and appending to that list. This does mean that a single long-running callback can potentially block other callbacks from being executed. Some kind of work-stealing could mitigate this, and is a good direction for future work.
Definition at line 65 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 110 of file callback_queue_manager.h.
Definition at line 108 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 115 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 158 of file callback_queue_manager.h.
| nodelet::detail::CallbackQueueManager::CallbackQueueManager | ( | uint32_t | num_worker_threads = 0 | ) | 
Constructor.
By default, uses the number of hardware threads available on the current system.
Definition at line 46 of file callback_queue_manager.cpp.
| nodelet::detail::CallbackQueueManager::~CallbackQueueManager | ( | ) | 
Definition at line 63 of file callback_queue_manager.cpp.
| void nodelet::detail::CallbackQueueManager::addQueue | ( | const CallbackQueuePtr & | queue, | 
| bool | threaded | ||
| ) | 
Definition at line 111 of file callback_queue_manager.cpp.
| void nodelet::detail::CallbackQueueManager::callbackAdded | ( | const CallbackQueuePtr & | queue | ) | 
Definition at line 130 of file callback_queue_manager.cpp.
| uint32_t nodelet::detail::CallbackQueueManager::getNumWorkerThreads | ( | ) | 
Definition at line 106 of file callback_queue_manager.cpp.
| 
 | private | 
Definition at line 140 of file callback_queue_manager.cpp.
| 
 | private | 
Definition at line 164 of file callback_queue_manager.cpp.
| void nodelet::detail::CallbackQueueManager::removeQueue | ( | const CallbackQueuePtr & | queue | ) | 
Definition at line 122 of file callback_queue_manager.cpp.
| void nodelet::detail::CallbackQueueManager::stop | ( | ) | 
Definition at line 88 of file callback_queue_manager.cpp.
| 
 | private | 
Definition at line 245 of file callback_queue_manager.cpp.
| 
 | private | 
Definition at line 162 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 111 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 112 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 161 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 119 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 159 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 116 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 118 of file callback_queue_manager.h.
| 
 | private | 
Definition at line 117 of file callback_queue_manager.h.