Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# F中的节流并行选项#_F# - Fatal编程技术网

F# F中的节流并行选项#

F# F中的节流并行选项#,f#,F#,我想在处理某些数据时使用限制并行。有以下几种选择: 使用.Net的阻塞队列 Tomas的BlockingQueueAgent,使用MailboxProcessor 使用C#任务 还有其他选择吗?特别是这些惯用的F#方法?请看,有趣的是,第一个问题也是由Tomas回答的。它与他的BlockingQueueAgent相比如何?我在c#中使用了,但在f#中没有。不幸的是,f#async与c#Task不同,需要进行一些转换。在F#世界中,这是一个真正存在的美好事物,因为所有的“块”都是真正的功能结

我想在处理某些数据时使用限制并行。有以下几种选择:

  • 使用.Net的阻塞队列
  • Tomas的BlockingQueueAgent,使用
    MailboxProcessor
  • 使用C#任务

还有其他选择吗?特别是这些惯用的F#方法?

请看,有趣的是,第一个问题也是由Tomas回答的。它与他的BlockingQueueAgent相比如何?我在c#中使用了,但在f#中没有。不幸的是,f#async与c#Task不同,需要进行一些转换。在F#世界中,这是一个真正存在的美好事物,因为所有的“块”都是真正的功能结构。这些块采用的是提供您所寻求的限制的方法。看起来我一直在一遍又一遍地写相同的答案:-)。我认为
ThrottlingAgent
答案只是对特定问题的直接回答,而
BlockingQueueAgent
是一个更通用的工具,可用于实现节流模式。两者都会以同样的方式完成任务。这就是说,如果您可以不使用标准的.NET阻塞队列,那么这可能就是最好的方法-没有代码总是比某些代码好,即使它是我的:)