G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon
Download 1.46 Mb.
|
ParVychGafGal (1)
- Bu sahifa navigatsiya:
- InnerExceptions xususiyatidan foydalanishni korsatadi
- Parallel.Invoke
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 } } Vazifaning parallelligi va Parallel.Invoke dan foydalanishBa'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
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling