我需要处理1600万个数据库记录,这将永远带我。我没有穿着精明,以为我会问这里。我的想法是我需要执行以下操作但不确定如何:
这听起来是否正确,我将如何分配我的工作量(16米记录)......?
如果你能提供合理的建议,欢呼。
答案 0 :(得分:1)
我建议您通过以下方式使用众所周知的生产者 - 消费者模式:
实现此目的的一种非常简单的方法是使用ThreadPool
类。它可以方便地为您管理队列和工作人员。您所需要的只是通过QueueUserWorkItem
实现生产者和队列任务。
或者,如果您想使用TPL结构,您可以使用Task
和ConcurrentQueue
的组合自己实现上述机制。
答案 1 :(得分:1)
如果您想并行处理项目集合,那正是Parallel.Foreach()
的用途。你只需要传递一个你想要为每个项目执行的动作(可能是一个lambda),它将把你的集合拆分成块并执行它。
但是你必须小心你对这个行动的投入。这是因为代码将同时在更多线程上执行,因此您不应该以非线程安全的方式访问任何共享状态。