TPL Dataflow块中的异步/同步工作器委托。哪个更好?

时间:2014-03-07 13:31:43

标签: .net delegates task-parallel-library block dataflow

之间是否存在任何差异:

Dim Block As New TransformBlock(Of Integer, Integer)(Function(_i)
                                                     //sync proccessing
                                                       Return j
                                                     End Function)

   Dim Block As New TransformBlock(Of Integer, Integer)(Async Function(_i)
                                                       Return Await something
                                                     End Function)

即使我使用Sync委托,设置块的MaxDegreeOfParallelerism也会影响其性能。因此,当我得到它时,block从其同步委托创建一个Task(Of T)并与其实例一起工作。

最好使用哪种变体?

2 个答案:

答案 0 :(得分:2)

当您进行自然异步工作时(例如,I / O绑定),请使用异步委托。

当您有自然同步工作时(例如,CPU绑定),请使用同步委托。

两者都不“更好”;这取决于你需要做什么样的工作。

答案 1 :(得分:0)

由于委托正在新的工作线程上运行,我想知道异步委托还是同步委托在性能上会有太大差异。

例如,同步委托正在读取一个大文件,并且由于它正在工作线程上运行,因此它也不会阻塞主线程。