TBB Flow Graph

流程图(Flow Graph)

图(graph)

节点和边的句柄

graph_node

节点的基类

sender

信息发送节点的基类

receiver

信息接收节点的基类

转发和缓冲(Forwarding and Buffering)

转发

图中向后继者转发信息的节点有两种可能的转发策略,这是节点的属性之一:

  1. 广播(broadcast-push)——信息将被推送给尽可能多的接收信息的后继结点。如果没有后继节点接收信息,信息的命运将取决于节点的输出缓冲策略
  2. 单播(single-push)——如果后继者接受了该信息,则不会再推送该信息。如果后继者拒绝了该信息,则会尝试该集合中的下一个后继者。这种情况一直持续到有后继者接收信息,或者所有后继者都尝试过为止。如果没有后继者接收信息,信息将被保留,一遍将来可以重新发送。成功传送后,该信息将从节点中删除
缓冲

有两种策略可以处理无法推送给任何后继者的信息:

  1. 缓冲(buffering)——如果没有后继者接收信息,则将其存起来;try_get():true
  2. 丢弃(discarding)——如果没有后继者接收信息,则其将被丢弃;try_get():false

节点策略:

Nodetry_get()?Forwarding
函数节点(Functional Nodes)
input_nodeyesbroadcast-push
function_node<rejecting>nobroadcast-push
function_node<queueing>nobroadcast-push
continue_nodenobroadcast-push
multifunction_node<rejecting>nobroadcast-push
multifunction_node<queueing>nobroadcast-push
缓冲节点(Buffering Nodes)
buffer_nodeyessingle-push
priority_queue_nodeyessingle-push
queue_nodeyessingle-push
sequencer_nodeyessingle-push
overwrite_nodeyesbroadcast-push
write_once_nodeyesbroadcast-push
拆分合并节点(Split/Join Nodes)
join_node<queueing>yesbroadcast-push
join_node<reserving>yesbroadcast-push
join_node<tag_matching>yesbroadcast-push
split_nodenobroadcast-push
indexer_nodenobroadcast-push
其它节点(Other Nodes)
broadcast_nodenobroadcast-push
limiter_nodenobroadcast-push
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值