【问题标题】:Async/Sync worker delegate in TPL Dataflow block. Which better?TPL 数据流块中的异步/同步工作器委托。哪个更好?
【发布时间】:2014-04-10 16:21:50
【问题描述】:

两者之间有什么区别:

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)

即使我使用同步委托,设置块的 MaxDegreeOfParallelerism 也会影响其性能。因此,据我所知,block 从它的同步委托中创建了一个 Task(Of T) 并使用它的实例。

最好使用哪种变体?

【问题讨论】:

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


    【解决方案1】:

    当您有自然异步的工作要做(例如,I/O-bound)时使用异步委托。

    当您有自然同步的工作要做(例如,受 CPU 限制)时,请使用同步委托。

    没有一个是“更好的”;这取决于你需要做什么样的工作。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这似乎更像是一个评论而不是一个答案,因为你不确定它是否会起作用。
      猜你喜欢
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2023-03-13
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多