G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon


Download 1.46 Mb.
bet48/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   44   45   46   47   48   49   50   51   ...   85
Bog'liq
ParVychGafGal (1)

AggregateException-ni qo'lga kiritganingizdan so'ng , siz ko'rib chiqishingiz mumkin InnerExceptions xususiyatini o'qish orqali mavjud istisnolarning har biri . Bu xususiyat faqat o'qish uchun mo'ljallangan to'plamni qaytaradi
indeks bilan ko'rsatilgan yoki ro'yxatga olingan.
Quyidagi kod misoli InnerExceptions xususiyatidan foydalanishni ko'rsatadi,


harakat qilib ko'ring


{
Parallel.For(-10, 10, i =>
{
Console.WriteLine("100/ {0}={1}", i, 100 / (i % 10));
});
}
catch (AggregateException ex)
{
foreach (ex.InnerExceptions ichidagi istisno)
{
Console.WriteLine(ichki.Message);
79

Machine Translated by Google
}
}
      1. Vazifaning parallelligi va Parallel.Invoke dan foydalanish


Ba'zi algoritmlar ma'lumotlar parallelligiga ruxsat bermaydi, chunki ular bir xil harakatni takrorlamaydilar. Biroq, ular bo'lishi mumkin
vazifalarga bo'linish uchun nomzodlar. Bu erda algoritm qismlarga bo'lingan, mustaqil ravishda amalga oshirilishi mumkin. Har bir qism hisobga olinadi o'z protsessor yadrosida bajarilishi mumkin bo'lgan alohida vazifa,
bir vaqtning o'zida bir nechta vazifalar bajarilganda. Ushbu turdagi parchalanish odatda amalga oshirish qiyinroq, ba'zan esa algoritm bo'lishi talab qilinadi kamaytirish uchun sezilarli darajada o'zgartirilgan yoki butunlay almashtirilgan
ketma-ket bajarilishi va chegaralanishi kerak bo'lgan elementlar
umumiy o'zgaruvchan qiymatlar.
Parallel.Invoke usuli yaratish va yaratishning oson usulini taqdim etadi bir vaqtning o'zida bir nechta vazifalarni bajarish. Boshqa usullar kabi
Task Parallel Library (TPL), Parallel.Invoke usuli taqdim etadi
potentsial parallellik. Parallel.Invoke bajariladigan fayllardan foydalanish uchun vazifalar delegat sifatida taqdim etiladi. Vazifalar odatda bilan belgilanadi lambda iboralari yordamida, lekin o'rniga anonim iboralar ishlatilishi mumkin usullar va oddiy delegatlar. Ushbu usulni chaqirgandan so'ng, barcha vazifalar quyidagi buyruq bilan ishlov berish davom ettirilgunga qadar bajariladi Parallel.Invoke ko'rsatmasi . Ayrim delegatlarning ijrosi tartibi yo'q kafolatlangan, shuning uchun siz birining natijalariga tayanmasligingiz kerak parametrlar qatorida keyinroq paydo bo'ladigan operatsiya uchun mavjud.
Quyidagi misol uchta ishga tushirish uchun Parallel.Invoke dan foydalanadi individual vazifalar. Har biri buni ko'rsatish uchun xabarni ko'rsatadi
vazifa boshlanadi. Keyin birdan besh soniyagacha pauza qilinadi ish tugaganligini bildiruvchi ikkinchi xabar berilmaydi.

80
Machine Translated by Google


Parallel.Invoke( () => {
Console.WriteLine("1-topshiriq boshlandi"); Thread.Sleep(5000); Console.WriteLine("1-topshiriq bajarildi");
},


() => {


Console.WriteLine("2-topshiriq boshlandi"); Thread.Sleep(3000); Console.WriteLine("2-topshiriq bajarildi");
},


() => {


Console.WriteLine("3-topshiriq boshlandi"); Thread.Sleep(1000); Console.WriteLine("3-topshiriq bajarildi");
});

Ko'rishingiz mumkinki, uchta vazifa ham parallel ravishda bajarilgan va natijalar


dasturning turli ishga tushirilishi bilan farq qiladi.





Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   44   45   46   47   48   49   50   51   ...   85




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