Parallel hisoblashning asosiy tushunchalari


PARALLEL HISOBLASHDA KO'P TABLILIKDAN FOYDALANISH



Download 53,85 Kb.
bet4/7
Sana11.07.2022
Hajmi53,85 Kb.
#775888
1   2   3   4   5   6   7
Bog'liq
PARALLEL HISOBLASHNING ASOSIY TUSHUNCHALARI

5. PARALLEL HISOBLASHDA KO'P TABLILIKDAN FOYDALANISH
5.1. Threading qanday ishlaydi
Net-da multithreading, CLR odatda operatsion tizimga o'tadigan xususiyat bo'lgan ish jadvali tomonidan boshqariladi. Tarmoq rejalashtiruvchisi barcha faol ish zarrachalariga tegishli bajarish vaqti ajratilishini ta'minlaydi va kutilayotgan yoki bloklangan iplar CPU vaqtini sarflamaydi. Yagona protsessorli kompyuterda ipni rejalashtiruvchi vaqtni taqsimlashni amalga oshiradi - har bir faol oqim o'rtasida tez almashish. Ko'p protsessorli kompyuterda ko'p ish zarralari vaqtni almashish va haqiqiy parallelizm aralashmasi bilan amalga oshiriladi, bu erda turli xil iplar bir vaqtning o'zida turli protsessorlarda kod ishlaydi. Vaqtni kesish kabi tashqi omillar ta'sirida uning bajarilishi to'xtatilsa, ip oldindan o'rnatilgan deyiladi. Aksariyat hollarda oqimning o'zi qachon va qayerda yuklanishini nazorat qila olmaydi. Tarmoq dasturni ishga tushiradigan operatsion tizim jarayoniga o'xshaydi. Kompyuterda jarayonlar parallel ravishda bajarilgani kabi, iplar ham bitta jarayon ichida parallel ishlaydi. Jarayonlar bir-biridan butunlay ajratilgan; oqimlar cheklangan darajadagi izolyatsiyaga ega. Xususan, ish zarrachalari bir xil ilovada ishlaydigan boshqa ish zarrachalari bilan xotirani almashadilar. Ko'p ish zarralarining eng keng tarqalgan qo'llanilishi: 1. Moslashuvchan foydalanuvchi interfeysini qo'llab-quvvatlash. Parallel ipda ko'p vaqt talab qiladigan vazifalarni bajarayotganda, asosiy UI ipi klaviatura va sichqoncha hodisalarini qayta ishlashni davom ettirishi mumkin. 2. Qulflangan protsessordan samarali foydalanish. Ko'p ish zarrachasi boshqa kompyuter yoki apparat qismidan javob kutayotganda foydali bo'ladi. Vazifa bajarilayotganda bitta ip bloklangan bo'lsa, boshqa ish zarrachalari boshqa boshqarilmaydigan kompyuterdan foydalanishi mumkin.
3. Parallel dasturlash. Intensiv hisob-kitoblarni amalga oshiradigan kod, agar ish yuki bir nechta oqimlar bo'ylab taqsimlangan bo'lsa, ko'p yadroli yoki ko'p protsessorli kompyuterlarda tezroq ishlashi mumkin. 4. So'rovlarni bir vaqtda qayta ishlash. Serverda mijoz so'rovlari bir vaqtning o'zida kelishi mumkin, shuning uchun ularni parallel ravishda qayta ishlash kerak. Multithreading, shuningdek, rejalashtirish va mavzuni almashtirishda resurs va protsessorga qo'shimcha xarajatlarni talab qiladi. Multithreading har doim ham dasturni tezlashtiravermaydi - agar noto'g'ri ishlatilsa, u hatto sizni sekinlashtirishi mumkin. 5.2. Tarmoqlarni yaratish va ishga tushirish. Ma'lumotlarni oqimga uzatish. Mavzular Thread sinfining konstruktori yordamida yaratiladi, ThreadStart-ga delegat uzatiladi, bu esa bajarilishini qaerdan boshlash kerakligini ko'rsatadi. ThreadStart delegati shunday aniqlanadi: umumiy delegat void ThreadStart(); Ipning bajarilishi uning usuli bajarilgunga qadar davom etadi va shu nuqtada ip tugaydi. Quyida TheadStart delegatini yaratish uchun kengaytirilgan C# sintaksisidan foydalanish misoli keltirilgan: class ThreadTest
{
static void Main()
{
Thread thread1 = new Thread(new ThreadStart(Go));
thread1.Start();
Go();
}
static void Go()
{
Console.WriteLine("hello!");57
}
}
Ushbu misolda thread1 Go() usulini bajarmoqda va shu bilan birga bu usul asosiy ipda ham bajarilmoqda. Natijada bir lahzaga yaqin ikkita salom chiqishi.
Ushbu misolda thread1 Go() usulini bajarmoqda va shu bilan birga bu usul asosiy ipda bajarilmoqda. Natijada bir lahzaga yaqin ikkita salom chiqishi. Argumentlarni ipning maqsadli usuliga o'tkazishning eng oson yo'li bu usulni kerakli argumentlar bilan chaqiradigan lambda ifodasini bajarishdir: class Program.
{
static void Main()
{
Thread thread1 = new Thread(() => Print("Hello from thread1!"));
thread1.Start();
}
static void Print(string message)
{
Console.WriteLine(message);
}
}
Yana bir usul - argumentni ThreadStart usuliga o'tkazish: sinf dasturi
{
static void Main()
{
Thread thread1 = new Thread(Print);
thread1.Start("Hello from thread1!");
}
static void Print(object messageObj)58
{
string message = (string)messageObj;
Console.WriteLine(message);
}
}
Bu ikkita delegatdan birini qabul qilish uchun Thread konstruktori haddan tashqari yuklanganligi sababli ishlaydi: umumiy delegat void ThreadStart(); ommaviy delegat void ParameterizedThreadStart (ob'ekt obj ); ParameterizedThreadStart ning cheklovi shundaki, u faqat bitta argumentni oladi

Download 53,85 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




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