微软在陈述&#34;克隆&#34; TPL Dataflow BroadcastBlock <t>中的消息?

时间:2018-01-16 04:16:51

标签: c# task-parallel-library clone tpl-dataflow

我指的是MSDN中的以下链接:Broadcast Block

它声明链接到目标的消息被克隆&#34;。

我想知道MS在这里指的是什么类型的克隆,一个深层克隆?它如何影响内存消耗?

1 个答案:

答案 0 :(得分:2)

创建BroadcastBlock<T>时,您可以定义克隆功能,因此完全负责其工作原理。如果你想通过引用传递,那么不要在克隆函数中对你的对象做任何事情:

new BroadcastBlock<T>(x => x, options)

如果你想要深层复印,你必须自己做。 BroadcastBlock对它正在处理的数据一无所知。它只知道它在完整时会丢弃消息,并在向管道传递数据时调用 你的 函数。

此外,BroadcastBlock允许您为cloningFunction传递null,这有效地让您无需操作即可传递数据。

private TOutput CloneItem(TOutput item)
{
    return _cloningFunction != null ?
        _cloningFunction(item) :
        item;
} 

<强> Source

<强> Example