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


 Параллельность задач и Использование Parallel.Invoke



Download 2,08 Mb.
Pdf ko'rish
bet53/98
Sana16.12.2022
Hajmi2,08 Mb.
#888158
TuriУчебное пособие
1   ...   49   50   51   52   53   54   55   56   ...   98
Bog'liq
ParVychGafGal

6.6. Параллельность задач и Использование Parallel.Invoke 
Некоторые алгоритмы не позволяют использовать параллелизм данных, 
поскольку они не повторяют одно и то же действие. Однако они могут быть 
кандидатами на разложение на задачи. Здесь алгоритм разбивается на части, 
которые могут выполняться независимо. Каждая часть рассматривается как 
отдельная задача, которая может выполняться на собственном ядре процессора, 
при этом одновременно выполняются несколько задач. Этот тип декомпозиции 
обычно сложнее реализовать, и иногда требуется, чтобы алгоритм был 
существенно изменен или полностью заменен, чтобы минимизировать 
элементы, которые должны выполняться последовательно и ограничивать 
общие изменчивые значения. 
Метод
 
Parallel.Invoke
обеспечивает простой способ создания и 
выполнения нескольких задач одновременно. Как и другие методы в 
параллельной библиотеке задач (TPL), метод 
Parallel.Invoke
обеспечивает 
потенциальный параллелизм. Для использования 
Parallel.Invoke
выполняемые 
задачи предоставляются в виде делегатов. Задачи обычно определяются с 
помощью лямбда-выражений, но вместо них могут использоваться анонимные 
методы и простые делегаты. После вызова этого метода все задачи 
выполняются до продолжения обработки с помощью команды, следующей за 
инструкцией 
Parallel.Invoke
. Порядок выполнения отдельных делегатов не 
гарантируется, поэтому вам не следует полагаться на результаты одной 
операции, доступной для той, которая появляется позже в массиве параметров. 
Следующий пример использует 
Parallel.Invoke
для запуска трех 
отдельных задач. Каждый из них отображает сообщение, чтобы показать, что 
задача запущена. Затем происходит пауза между одной-пятью секундами, пока 
не выдается второе сообщение, указывающее на завершение задания. 


81 
Parallel.Invoke( 
() => { 
Console.WriteLine("Task 1 started"); 
Thread.Sleep(5000); 
Console.WriteLine("Task 1 complete"); 
}, 
() => { 
Console.WriteLine("Task 2 started"); 
Thread.Sleep(3000); 
Console.WriteLine("Task 2 complete"); 
}, 
() => { 
Console.WriteLine("Task 3 started"); 
Thread.Sleep(1000); 
Console.WriteLine("Task 3 complete"); 
}); 
Вы можете видеть, что все три задачи выполнялись параллельно, и результаты 
варьируются при разных запусках программы.
 
Метод 

Download 2,08 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   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