Microsoft 在 TPL Dataflow BroadcastBlock<T> 中声明 "cloning" 消息时指的是什么?
What does Microsoft refer to when it states "cloning" messages in TPL Dataflow BroadcastBlock<T>?
我指的是 MSDN 中的以下 link:Broadcast Block
它指出发往 link 目标的消息是 "cloned"。
我想知道 MS 在这里指的是什么类型的克隆,深度克隆?它究竟如何影响内存消耗?
当您创建 BroadcastBlock<T>
时,您定义了克隆功能,因此完全负责其工作方式。如果你想通过引用传递那么不要在克隆函数中对你的对象做任何事情:
new BroadcastBlock<T>(x => x, options)
如果你想要深拷贝,你必须自己做。 BroadcastBlock
对它正在处理的数据一无所知。它只知道它在满时丢弃消息,并在将数据传递到管道时调用你的函数。
此外,BroadcastBlock
允许您为 cloningFunction
传递空值,这可以有效地让您在不进行操作的情况下传递数据。
private TOutput CloneItem(TOutput item)
{
return _cloningFunction != null ?
_cloningFunction(item) :
item;
}
我指的是 MSDN 中的以下 link:Broadcast Block
它指出发往 link 目标的消息是 "cloned"。
我想知道 MS 在这里指的是什么类型的克隆,深度克隆?它究竟如何影响内存消耗?
当您创建 BroadcastBlock<T>
时,您定义了克隆功能,因此完全负责其工作方式。如果你想通过引用传递那么不要在克隆函数中对你的对象做任何事情:
new BroadcastBlock<T>(x => x, options)
如果你想要深拷贝,你必须自己做。 BroadcastBlock
对它正在处理的数据一无所知。它只知道它在满时丢弃消息,并在将数据传递到管道时调用你的函数。
此外,BroadcastBlock
允许您为 cloningFunction
传递空值,这可以有效地让您在不进行操作的情况下传递数据。
private TOutput CloneItem(TOutput item)
{
return _cloningFunction != null ?
_cloningFunction(item) :
item;
}