Enables threads and interrupts to enqueue work as a pw::work_queue::WorkItem
for execution by the work queue.
Queue sizing: The number of outstanding work requests is limited based on the internal queue size. The queue size is set through either the size of the queue_storage
buffer passed into the constructor or by using the templated pw::work_queue::WorkQueueWithBuffer
helper. When the queue is full, the queue will not accept further work.
Cooperative thread cancellation: The class is a pw::thread::ThreadCore
, meaning it should be executed as a single thread. To facilitate clean shutdown, it provides a RequestStop()
method for cooperative cancellation which should be invoked before joining the thread. Once a stop has been requested the queue will no longer accept further work.
The entire API is thread-safe and interrupt-safe.
Public Member Functions | |
CustomWorkQueue (InlineQueue< WorkItem > &queue, pw::Function< void(WorkItem &)> &&fn) | |
Status | PushWork (WorkItem &&work_item) |
void | CheckPushWork (WorkItem &&work_item) |
void | CheckPushWork (WorkItem &work_item) |
void | RequestStop () |