将项目发布到 TPL 操作块,使用 Task.run 和不使用



我是TPL库的新手,有一个简单的问题,我没有找到答案。

像这样调用TPL块有什么区别(如果有的话):

foreach (var t in paramsLisr)
{
  someBlock.Post(t);
}

foreach (var t in paramsLisr)
{
 Task.run(()={someBlock.Post(t)});                        
}

你的第二个例子是完全多余的,几乎是错误的。启动任务以发布到操作块是没有意义的。

ActionBlock和类似情况下,使用内部缓冲区并将无缝使用消息(除非您设置了BoundedCapacity)。即使您设置了BoundedCapacity使用Task发布也是错误的方法,您可能应该使用另一个块来缓冲消息

最新更新