【发布时间】:2013-04-30 20:33:01
【问题描述】:
好的,我已经有一段时间没有真正不得不动态地使用大量线程了。
基本上情况是:
我有一个来自数据库查询的大型集合,过分地说,100 万行已返回并存储在某种类型的集合中(arraylist、map 等)。我希望能够获取该集合并将其在线程、进程等之间进行划分,以便可以有效地完成工作。但是我不想将整个集合平均分成不同的进程。我想说 10 个线程,每个线程处理 30 行,当它们处理完他们拥有的内容后,它们会从原始集合中获取更多行。
这是解决这个问题的第一个想法。我不确定集合到线程的动态分配会是什么样子。我最终希望收集所有单独的流程结果并将它们编译到另一个集合中,以供将来处理。我知道查询结果将是非常多的行,并认为最初动态地将部分分配给线程并在它们完成任务时将是处理此问题的最佳方法。
这是一个两部分的问题。一,什么会......说......伪代码看起来像这样?第二,这是处理这种情况的最佳方法吗?
任何帮助将不胜感激。哦,我正在考虑为此使用 C#。
谢谢!
【问题讨论】:
-
您不希望在 CPU 中创建比内核更多的线程。所以10个线程大多太多了。查看此链接以获取一些提示和代码示例:msdn.microsoft.com/en-us/magazine/cc163340.aspx
标签: c# multithreading collections parallel-processing