次の方法で共有


single_assignment クラス

single_assignment メッセージング ブロックは、一度だけ書き込むことができる message を 1 つ格納できる、複数のターゲットと複数のソースを持つ順序付けられた propagator_block です。

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

パラメーター

  • _Type
    バッファーによって格納および伝達されるメッセージのペイロード型。

メンバー

パブリック コンストラクター

名前

説明

single_assignment::single_assignment コンストラクター

オーバーロードされます。 single_assignment メッセージング ブロックを構築します。

single_assignment::~single_assignment デストラクター

single_assignment メッセージング ブロックを破棄します。

パブリック メソッド

名前

説明

single_assignment::has_value メソッド

この single_assignment メッセージング ブロックが値で初期化されているかどうかをチェックします。

single_assignment::value メソッド

single_assignment メッセージング ブロックに格納されるメッセージの現在のペイロードへの参照を取得します。

プロテクト メソッド

名前

説明

single_assignment::accept_message メソッド

この single_assignment メッセージング ブロックによって提供されたメッセージを受け入れ、そのメッセージのコピーを呼び出し元に返します。

single_assignment::consume_message メソッド

この single_assignment によって以前に提供され、ターゲットによって予約されたメッセージを使用して、そのメッセージのコピーを呼び出し元に返します。

single_assignment::link_target_notification メソッド

新しいターゲットがこの single_assignment メッセージング ブロックにリンクされたことを通知するコールバックです。

single_assignment::propagate_message メソッド

ISource ブロックからこの single_assignment メッセージング ブロックにメッセージを非同期に渡します。 このメソッドは、ソース ブロックから呼び出されたときに propagate メソッドによって呼び出されます。

single_assignment::propagate_to_any_targets メソッド

message_PMessage をこの single_assignment メッセージング ブロックに配置し、それをリンクされたすべてのターゲットに提供します。

single_assignment::release_message メソッド

以前に行われたメッセージの予約を解放します。(source_block::release_message をオーバーライドします。)

single_assignment::reserve_message メソッド

この single_assignment メッセージング ブロックによって以前に提供されたメッセージを予約します。(source_block::reserve_message をオーバーライドします。)

single_assignment::resume_propagation メソッド

予約が解放された後で反映を再開します。(source_block::resume_propagation をオーバーライドします。)

single_assignment::send_message メソッド

ISource ブロックからこの single_assignment メッセージング ブロックにメッセージを同期的に渡します。 このメソッドは、ソース ブロックから呼び出されたときに send メソッドによって呼び出されます。

解説

single_assignment メッセージング ブロックは、そこに格納されているメッセージのコピーを個々のターゲットに送信します。

詳細については、「非同期メッセージ ブロック」を参照してください。

継承階層

ISource

ITarget

source_block

propagator_block

single_assignment

必要条件

ヘッダー: agents.h

名前空間: concurrency

参照

関連項目

concurrency 名前空間

overwrite_buffer クラス

unbounded_buffer クラス