Поиск списка кортежей параллельно - PullRequest
0 голосов
/ 28 марта 2012

У меня есть большой список кортежей (1000) целых чисел в форме Tuple. Как я могу сделать List.Find и поиск списка параллельно? Я ищу обе части кортежа (т.е. левый и правый элемент).

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Если list - это название вашей коллекции, а x - это значение, которое вы ищете, это должно быть сделано (при условии, что вы работаете с .net 4.0):

var result = list.AsParallel().Where(tuple => tuple.Item1 == x).ToList();
0 голосов
/ 28 марта 2012

Логически разделите ваш список на куски. Дайте каждой теме свой список для поиска. Проще (с точки зрения примера), если вы используете массив, потому что вы можете указать границы внутри массива, где каждый поток может искать.

Например, если у вас 3 потока и массив длиной n. Вы можете позволить первому потоку искать элементы из 0-n / 3; второй поток ищет от n / 3 до 2 * n / 3; третий поток ищет от 2 * n / 3 до n.

Предостережение: наличие трех потоков поиска не означает, что поиск происходит параллельно. У вас может не быть 3 ядер / процессоров, доступных на вашем компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...