Учебное пособие Казань 018 удк



Download 2,08 Mb.
Pdf ko'rish
bet61/98
Sana16.12.2022
Hajmi2,08 Mb.
#888158
TuriУчебное пособие
1   ...   57   58   59   60   61   62   63   64   ...   98
Bog'liq
ParVychGafGal

CancellationTokenSource
для 
генерации токенов для каждой группы. 
6.10. Параллельный LINQ 
Language-Integrated Query
 (LINQ)
предоставляет декларативную модель, 
которая позволяет запрашивать последовательности данных, таких как 
коллекции в памяти, документы XML и данные базы данных. Характер 
многих запросов означает, что их можно легко распараллелить. Большинство 
запросов выполняют одну и ту же группу действий для каждого элемента в 
коллекции. Если все эти действия являются независимыми, без побочных 
эффектов, вызванных порядком, в котором они появляются, вы часто можете 
добиться большого увеличения производительности за счет разделения работы 
между несколькими процессорными ядрами.
Чтобы поддержать эти сценарии .NET Framework версии 4.0 
представила 
Parallel LINQ
 (PLINQ)

PLINQ
предоставляет те же стандартные 
операторы запросов и синтаксис выражений запроса, что и 
LINQ
. Основное 
различие заключается в том, что исходные данные могут быть разбиты на части 
с использованием декомпозиции данных. Эти меньшие группы данных затем 
потенциально обрабатываются всеми доступными ядрами ЦП. 
PLINQ
имеет 
некоторые ограничения, которые означают, что он не является прямой заменой 
LINQ
и не может быть параметром по умолчанию для запросов. Ключом к 
числу ограничений является то, что побочные эффекты обработки отдельных 
элементов из исходных последовательностей, такие как результат обработки 
одного элемента, зависящего от другого, могут приводить к непредсказуемым 


90 
результатам. Это связано с тем, что исходные элементы обычно не 
обрабатываются в исходном порядке. Второе ограничение заключается в том, 
что PLINQ обеспечивает параллелизм для данных в памяти, таких как 
коллекции или предварительно загруженный XML.
Чтобы показать, как может быть изменен запрос LINQ для параллельной 
обработки, сначала нужна последовательная версия. В приведенном ниже коде 
показан очень простой запрос. Здесь мы начинаем с массива, содержащего 
целые числа от одного до десяти. Используя оператор 
Select
, мы проецируем 
его на новую последовательность, содержащую квадраты исходных 
значений. Поскольку LINQ использует отложенное выполнение, новая 
последовательность не генерируется до тех пор, пока данные не будут 
доступны. Это означает, что цикл foreach заставляет запрос выполняться и 
выводит результаты. 
int[] sequence = Enumerable.Range(1, 10).ToArray(); 
 var squares = sequence.Select(x => x * x); 
 foreach (var square in squares) 
 { 
Console.Write(square + " "); 
 } 
 Console.ReadLine(); 
Результат: 1 4 9 16 25 36 49 64 81 100 
LINQ 
работает 
с 
последовательностями, 
реализующими 
интерфейс 

Download 2,08 Mb.

Do'stlaringiz bilan baham:
1   ...   57   58   59   60   61   62   63   64   ...   98




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish