【问题标题】:Parallel.ForEach vs regular Thread loopParallel.ForEach 与常规线程循环
【发布时间】:2015-11-01 16:39:53
【问题描述】:

我想使用Pcap.Net DLL 编写应用程序。 我的应用程序获得了几个PCAP 文件并发送了所有数据包。 现在我想添加并发发送多个文件的选项,并想知道什么是最好的\有效的方式来做到这一点。 我有我的应用程序获取的文件集合,我正在考虑将Parallel.ForEachMaxDegreeOfParallelism 属性一起使用,或者可能是我可以使用并且有用的其他方式。

【问题讨论】:

  • 几个问题,文件有多大?还有你在和他们做什么?如果它们很小并且不需要使用并行,我不会。
  • 您是通过 HTTP 上传它们还是什么?你能发布一个代码示例吗
  • 这完全取决于您在程序“获取”文件时对文件所做的操作。请解释更多您对传入文件所做的事情,如果您所做的只是将它们写入磁盘,那么使其并行将使整个事情变得更慢,而不是更快,因为开销成本超过了您将获得的收益。但是,如果您正在执行任何类型的 CPU 密集型工作,则并行执行可能会有所帮助。
  • Parallel 很有用,但请注意,它是一种多线程方法,因此从不同线程访问 var 是一个真正的问题

标签: .net task pcap.net


【解决方案1】:

您可以使用 BlockingCollection 并启动多个工作线程来监视此 BlockingCollection。您使用 BockingCollection 的 GetConsumingEnumerable 方法来启动多个工作线程。当文件可用时,您将其添加到 BlockingCollection,然后其中一个工作线程选择文件进行处理。您可以在这里查看详细信息:http://mikehadlow.blogspot.in/2012/11/using-blockingcollection-to-communicate.html

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2014-11-29
    • 2020-12-24
    相关资源
    最近更新 更多