single_assignment Class

A single_assignment messaging block is a multi-target, multi-source, ordered propagator_block capable of storing a single, write-once message.

template<
   class _Type
>
class single_assignment : public propagator_block<multi_link_registry<ITarget<_Type>>, multi_link_registry<ISource<_Type>>>;

Parameters

  • _Type
    The payload type of the message stored and propagated by the buffer.

Members

Public Constructors

Name

Description

single_assignment::single_assignment Constructor

Overloaded. Constructs a single_assignment messaging block.

single_assignment::~single_assignment Destructor

Destroys the single_assignment messaging block.

Public Methods

Name

Description

single_assignment::has_value Method

Checks whether this single_assignment messaging block has been initialized with a value yet.

single_assignment::value Method

Gets a reference to the current payload of the message being stored in the single_assignment messaging block.

Protected Methods

Name

Description

single_assignment::accept_message Method

Accepts a message that was offered by this single_assignment messaging block, returning a copy of the message to the caller.

single_assignment::consume_message Method

Consumes a message previously offered by the single_assignment and reserved by the target, returning a copy of the message to the caller.

single_assignment::link_target_notification Method

A callback that notifies that a new target has been linked to this single_assignment messaging block.

single_assignment::propagate_message Method

Asynchronously passes a message from an ISource block to this single_assignment messaging block. It is invoked by the propagate method, when called by a source block.

single_assignment::propagate_to_any_targets Method

Places the message_PMessage in this single_assignment messaging block and offers it to all of the linked targets.

single_assignment::release_message Method

Releases a previous message reservation. (Overrides source_block::release_message.)

single_assignment::reserve_message Method

Reserves a message previously offered by this single_assignment messaging block. (Overrides source_block::reserve_message.)

single_assignment::resume_propagation Method

Resumes propagation after a reservation has been released. (Overrides source_block::resume_propagation.)

single_assignment::send_message Method

Synchronously passes a message from an ISource block to this single_assignment messaging block. It is invoked by the send method, when called by a source block.

Remarks

A single_assignment messaging block propagates out copies of its message to each target.

For more information, see Asynchronous Message Blocks.

Inheritance Hierarchy

ISource

source_block

ITarget

propagator_block

single_assignment

Requirements

Header: agents.h

Namespace: Concurrency

See Also

Reference

Concurrency Namespace

overwrite_buffer Class

unbounded_buffer Class