|
| multitype_join (_Type _Tuple) |
| Constructs a multitype_join messaging block. More...
|
|
| multitype_join (multitype_join &&_Join) |
| Constructs a multitype_join messaging block. More...
|
|
| ~multitype_join () |
| Destroys the multitype_join messaging block. More...
|
|
virtual void | link_target (_Inout_ ITarget< _Destination_type > *_PTarget) |
| Links a target block to this multitype_join messaging block. More...
|
|
virtual void | unlink_target (_Inout_ ITarget< _Destination_type > *_PTarget) |
| Unlinks a target block from this multitype_join messaging block. More...
|
|
virtual void | unlink_targets () |
| Unlinks all targets from this multitype_join messaging block. More...
|
|
virtual message< _Destination_type > * | accept (runtime_object_identity _MsgId, _Inout_ ITarget< _Destination_type > *_PTarget) |
| Accepts a message that was offered by this multitype_join block, transferring ownership to the caller. More...
|
|
virtual bool | reserve (runtime_object_identity _MsgId, _Inout_ ITarget< _Destination_type > *_PTarget) |
| Reserves a message previously offered by this multitype_join messaging block. More...
|
|
virtual message< _Destination_type > * | consume (runtime_object_identity _MsgId, _Inout_ ITarget< _Destination_type > *_PTarget) |
| Consumes a message previously offered by the multitype_join messaging block and successfully reserved by the target, transferring ownership to the caller. More...
|
|
virtual void | release (runtime_object_identity _MsgId, _Inout_ ITarget< _Destination_type > *_PTarget) |
| Releases a previous successful message reservation. More...
|
|
virtual void | acquire_ref (_Inout_ ITarget< _Destination_type > *_PTarget) |
| Acquires a reference count on this multitype_join messaging block, to prevent deletion. More...
|
|
virtual void | release_ref (_Inout_ ITarget< _Destination_type > *_PTarget) |
| Releases a reference count on this multiple_join messaging block. More...
|
|
virtual | ~ISource () |
| Destroys the ISource object. More...
|
|
virtual void | link_target (_Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, links a target block to this ISource block. More...
|
|
virtual void | unlink_target (_Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, unlinks a target block from this ISource block, if found to be previously linked. More...
|
|
virtual message< _Unwrap< _Type >::type > * | accept (runtime_object_identity _MsgId, _Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, accepts a message that was offered by this ISource block, transferring ownership to the caller. More...
|
|
virtual bool | reserve (runtime_object_identity _MsgId, _Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, reserves a message previously offered by this ISource block. More...
|
|
virtual message< _Unwrap< _Type >::type > * | consume (runtime_object_identity _MsgId, _Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, consumes a message previously offered by this ISource block and successfully reserved by the target, transferring ownership to the caller. More...
|
|
virtual void | release (runtime_object_identity _MsgId, _Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, releases a previous successful message reservation. More...
|
|
virtual void | acquire_ref (_Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, acquires a reference count on this ISource block, to prevent deletion. More...
|
|
virtual void | release_ref (_Inout_ ITarget< _Unwrap< _Type >::type > *_PTarget)=0 |
| When overridden in a derived class, releases a reference count on this ISource block. More...
|
|
template<typename _Type, join_type _Jtype = non_greedy>
class Concurrency::multitype_join< _Type, _Jtype >
A multitype_join
messaging block is a multi-source, single-target messaging block that combines together messages of different types from each of its sources and offers a tuple of the combined messages to its targets.
- Template Parameters
-
_Type | The tuple payload type of the messages joined and propagated by the block. |
_Jtype | The kind of join block this is, either greedy or non_greedy |
For more information, see Asynchronous Message Blocks.
- See also
- choice Class, join Class, join_type Enumeration, make_join Function, make_greedy_join Function, tuple Class
template<typename _Type , join_type _Jtype = non_greedy>
Constructs a multitype_join
messaging block.
- Parameters
-
The runtime uses the default scheduler if you do not specify the _PScheduler or _PScheduleGroup parameters.
Move construction is not performed under a lock, which means that it is up to the user to make sure that there are no light-weight tasks in flight at the time of moving. Otherwise, numerous races can occur, leading to exceptions or inconsistent state.
- See also
- Scheduler Class, ScheduleGroup Class
12609 _M_pJoinNode =
new _Join_node<_Type, _Destination_type, _Jtype>();
12610 _Initialize_joins<0>();
#define NULL
Definition: vcruntime.h:236
Scheduler * _M_pScheduler
Definition: agents.h:12981
_Type _M_sourceTuple
Definition: agents.h:12978
ScheduleGroup * _M_pScheduleGroup
Definition: agents.h:12984
_Join_node< _Type, _Destination_type, _Jtype > * _M_pJoinNode
Definition: agents.h:12975
template<typename _Type , join_type _Jtype = non_greedy>
Constructs a multitype_join
messaging block.
- Parameters
-
_Join | A multitype_join messaging block to copy from. Note that the original object is orphaned, making this a move constructor. |
The runtime uses the default scheduler if you do not specify the _PScheduler or _PScheduleGroup parameters.
Move construction is not performed under a lock, which means that it is up to the user to make sure that there are no light-weight tasks in flight at the time of moving. Otherwise, numerous races can occur, leading to exceptions or inconsistent state.
- See also
- Scheduler Class, ScheduleGroup Class
12704 _Join._M_pJoinNode =
NULL;
#define NULL
Definition: vcruntime.h:236
Scheduler * _M_pScheduler
Definition: agents.h:12981
_Type _M_sourceTuple
Definition: agents.h:12978
ScheduleGroup * _M_pScheduleGroup
Definition: agents.h:12984
_Join_node< _Type, _Destination_type, _Jtype > * _M_pJoinNode
Definition: agents.h:12975
void * _M_pSourceJoins[std::tuple_size< _Type >::value]
Definition: agents.h:12972