добавление строк данных с использованием параллельного - PullRequest
0 голосов
/ 08 января 2011

У меня есть n наборов строк в таблице данных, и я хочу добавить эти n наборов.Я ищу способы распараллелить это.

пример: Установите 1: строка 0 в строку 9 Установите 2: строку 10 в строку 19 Установите 3: строку 20 t0 строка 29 Установите 3: строка 20 t0 строка 29

Добавить их в другую таблицу. Всего данных (строка 0 - строка 9) = установить 1 + установить 2 + установить 3

Я использую C #.

В настоящее время я реализовал этоиспользуя ThreadPool.QueueUserWorkItem следующим образом, но это немного некрасиво.

Я охватываю n число потоков (max = total cpus), распределяю наборы по этим потокам и вычисляю частичные суммы для n / 2 потоков, чтобы суммировать эти частичные суммыУ меня есть две частичные суммы, затем я суммирую их в общий набор данных.

пример: если у меня 10 наборов и 4 процессора

на первой итерации

1-й процессор: сумма 0, 1,2 = сумма 1 2-й процессор: сумма 3,5 = сумма 2 3-й процессор: сумма 6,7 = сумма 3 4-й процессор: сумма 8,9 = сумма 4

вторая итерация

1-й поток сумма 1+ sum2 = sum10 2-й поток sum3 + sum4 = sum 11

третья и последняя итерация

общая сумма = sum10 + sum11

Я пытаюсь сделать это с помощью .net Framework 4.0 Parallel Library.

Ответы [ 2 ]

0 голосов
/ 13 марта 2014

Смотрите:

Параллельный ForEach для DataTable

Из MSDN:

Этот тип безопасен для многопоточных операций чтения.Вы должны синхронизировать любые операции записи.

http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx

0 голосов
/ 09 мая 2012

В группе Microsoft Patterns and Practices есть книга, в которой подробно описан ряд методов параллельного программирования.Существует целая глава о параллельной агрегации, которую можно найти по адресу http://msdn.microsoft.com/en-us/library/ff963547.aspx, и она содержит примеры кода на C #.

...