受け取ったメッセージをすべての後続 (successor) にブロードキャストするノード。
template < typename T > class broadcast_node;
#include "tbb/flow_graph.h"
broadcast_node は、受け取った T 型のメッセージをすべての後続にブロードキャストする graph_node、receiver<T>、sender<T> です。 このノードではバッファー処理は行われないため、メッセージはすべて後続に直ちに転送されます。
後続 (successor) がメッセージを拒否した場合、メッセージ・パッシング・プロトコルを使用して処理されます (詳細は、以下のリンクを参照)。
T は、コピー構築可能および代入可能でなければなりません。
namespace tbb {
namespace flow {
template< typename T >
class broadcast_node :
public graph_node, public receiver<T>, public sender<T> {
public:
broadcast_node( graph &g );
broadcast_node( const broadcast_node &src );
// receiver<T>
typedef T input_type;
typedef sender<input_type> predecessor_type;
bool try_put( const input_type &v );
bool register_predecessor( predecessor_type &p );
bool remove_predecessor( predecessor_type &p );
// sender<T>
typedef T output_type;
typedef receiver<output_type> successor_type;
bool register_successor( successor_type &r );
bool remove_successor( successor_type &r );
bool try_get( output_type &v );
bool try_reserve( output_type &v );
bool try_release( );
bool try_consume( );
};
}
}
| メンバー | 説明 |
|---|---|
| broadcast_node( graph &g ) |
graph g に属する broadcast_node 型のオブジェクトを構築します。 |
| broadcast_node( const broadcast_node &src ) |
src と同じ graph g に属する broadcast_node 型のオブジェクトを構築します。 先行 (predecessor) のリスト、後続のリスト、バッファーのメッセージはコピーされません。 |
| bool try_put( const input_type &v ) |
すべての後続に v を追加します。 戻り値: メッセージを後続に転送できなかった場合でも常に true。 |
| bool register_predecessor( predecessor_type &p ) |
値を拒否しないため、先行 (predecessor) のリストを維持する必要はありません。 戻り値: false。 |
| bool remove_predecessor( predecessor_type &p ) |
値を拒否しないため、先行のリストを維持する必要はありません。 戻り値: false。 |
| bool register_successor( successor_type &r ) |
後続のセットに r を追加します。 戻り値: true。 |
| bool remove_successor( successor_type &r ) |
後続のセットから r を削除します。 戻り値: true。 |
| bool try_get( output_type &v ) |
内部バッファーが有効な場合、値を v に代入します。 戻り値: v が代入された場合は true。 v が代入されなかった場合は false。 |
| bool try_reserve( output_type &v ) |
戻り値: false。 |
| bool try_release( ) |
戻り値: false。 |
| bool try_consume( ) |
戻り値: false。 |