Concurrency Namespace


Visual Studio 2010 - Visual C++
single_assignment Class

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

Single-assignment buffer: can be written to only once. Single assignment is a multi-target, multi-source, ordered propagator block

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

_Type
Members

Public Constructors

Name

Description

single_assignment::~single_assignment Destructor

Cleans up any resources that may have been created by the single_assignment.

single_assignment::single_assignment Constructor

Overloaded. Creates an single_assignment within the specified schedule group. The scheduler is implied by the schedule group.

Public Methods

Name

Description

single_assignment::has_value Method

Checks whether this block has been initialized yet.

single_assignment::value Method

Gets a reference to the current payload of the message being stored.

Protected Methods

Name

Description

single_assignment::accept_message Method

Accepts an offered message by the source, transferring ownership to the caller.

single_assignment::consume_message Method

Consumes a message previously offered by the source and reserved by the target, transferring ownership to the caller.

single_assignment::link_target_notification Method

Notification that a target was linked to this source.

single_assignment::propagate_message Method

The main propagate() function for ITarget blocks. Called by a source block, generally within an asynchronous task to send messages to its targets.

single_assignment::propagate_to_any_targets Method

Takes the message and propagates it to all the targets of this single_assignment

single_assignment::release_message Method

Releases a previous message reservation. (Overrides Concurrency::source_block<_TargetLinkRegistry, _MessageProcessorType>::release_message).

single_assignment::reserve_message Method

Reserves a message previously offered by the source. (Overrides Concurrency::source_block<_TargetLinkRegistry, _MessageProcessorType>::reserve_message).

single_assignment::resume_propagation Method

Resumes propagation after a reservation has been released (Overrides Concurrency::source_block<_TargetLinkRegistry, _MessageProcessorType>::resume_propagation).

single_assignment::send_message Method

Synchronously sends a message to this block. When this function completes the message will already have propagated into the block.

Remarks

For more information, see Asynchronous Message Blocks.

Inheritance Hierarchy

ISource<typename _TargetLinkRegistry::type::type>

   source_block<_TargetLinkRegistry, _MessageProcessorType>

   ITarget<typename _SourceLinkRegistry::type::source_type>

      propagator_block<multi_link_registry<ITarget<_Type>>, multi_link_registry<ISource<_Type>>>

         Concurrency::single_assignment<_Type>

Requirements

Header: agents.h

See Also

Reference

Page view tracker