Class Qpid::Proton::WorkQueue
In: lib/core/work_queue.rb
Parent: Object

A thread-safe queue of work for multi-threaded programs.

A {Container} can have multiple threads calling {Container#run} The container ensures that work associated with a single {Connection} or {Listener} is serialized - two threads will never concurrently call handlers associated with the same object.

To have your own code serialized in the same, add a block to the connection‘s {WorkQueue}. The block will be invoked as soon as it is safe to do so.

A {Connection} and the objects associated with it ({Session}, {Sender}, {Receiver}, {Delivery}, {Tracker}) are not thread safe, so if you have multiple threads calling {Container#run} or if you want to affect objects managed by the container from non-container threads you need to use the {WorkQueue}

Methods

add   clear   close   empty?   new   next_tick   process   schedule  

Classes and Modules

Class Qpid::Proton::WorkQueue::StoppedError

Public Class methods

Public Instance methods

Add a block of code to be invoked in sequence.

@yield [ ] the block will be invoked with no parameters in the appropriate thread context @note Thread Safe: may be called in any thread. @return [void] @raise [StoppedError] if the queue is closed and cannot accept more work

@private

@private

@private

@private

Schedule a block to be invoked at a certain time.

@param at [Time] Invoke block as soon as possible after Time at @param at [Numeric] Invoke block after a delay of at seconds from now @yield [ ] (see add) @note (see add) @return (see add) @raise (see add)

[Validate]