Хорошо, прошло немного времени, так как мне действительно пришлось использовать много потоков динамически.Обработка потоков большая коллекция в C#
В принципе ситуация:
У меня есть большая коллекция из запроса к базе данных, скажем, чрезмерно, 1 миллион строк были возвращены и хранятся в коллекции своего рода (ArrayList, карта, и т.д.). Я хотел иметь возможность взять эту коллекцию и разделить ее между потоками, процессами и т. Д., Поэтому работа может быть выполнена эффективно. однако я не хочу равномерно разделить всю коллекцию на разные процессы. Я хочу сказать, 10 потоков, которые работают на 30 строк каждый, и когда они будут обрабатывать то, что у них есть, они захватывают больше строк из исходной коллекции.
Это первое, что пришло на ум, чтобы решить эту проблему. Я не уверен, как будет выглядеть динамическое распределение коллекции в потоках. В конечном итоге я захочу собрать все результаты отдельных процессов и скомпилировать их в другую коллекцию, которая будет использоваться для дальнейшей обработки. Я знаю, что результаты запроса будут очень большим количеством строк и подумали бы, что динамическое назначение частей для потоков изначально и по завершении их задач было бы лучшим способом справиться с этим.
Это вопрос двух частей. Во-первых, что бы ... сказать ... псевдо-код выглядит для этого? и два, это лучший способ справиться с этой ситуацией?
Любая помощь была бы принята с благодарностью. О, и я думаю о работе на C# для этого.
Спасибо!
Вы не хотите создавать больше потоков, чем ядра в CPU. Таким образом, 10 потоков будут в основном слишком много. Посмотрите на эту ссылку для некоторых советов и примеров кода: http://msdn.microsoft.com/en-us/magazine/cc163340.aspx – TcKs