JavaRush /Kurslar /All lectures for UZ purposes /Ko'p oqimlilik yoki ko'p ipliklilik

Ko'p oqimlilik yoki ko'p ipliklilik

All lectures for UZ purposes
Daraja, Dars
Mavjud

— Salom, Amigo! Bizda yangi va juda qiyin mavzu bor. Hamdardman. Ko'pincha bu nafaqat Java'da, balki dasturlashda umuman eng murakkab mavzulardan biri hisoblanadi. Bu – ko'p ipliklilik (multithreading).

O‘rtacha kompyuter o‘yini, masalan, yulduz kemalari poygasini tasavvur qiling. Siz kosmosda uchib ketasiz, meteoritlar va patrul kruizerlardan qochib, va siz bilan yana ikki o‘n ishtirokchi bu noqonuniy poygalarda qatnashmoqda.

Faraz qilaylik, siz shunday o‘yin yozishga qaror qildingiz. Dasturingiz boshqaruv buyruqlarini (klaviaturadan kirish) kuzatib borishi, yulduz kemalarini harakatlantirishi, ularning traektoriyalarini va to'qnashuv natijalarini hisoblab chiqishi, va bularning barchasini foydalanuvchi ekranida chizishi kerak. Bu juda murakkab ish.

Biz "katta murakkablik muammosini" kur'erlik kompaniyasining o'sishi haqidagi misolda qanday hal qilganimizni eslang.

— Biz uni mustaqil bo'limlarga ajratdik va ularning o'zaro ta'sir usullarini qat'iy belgiladik (standartlashtirdik).

— Lekin mustaqil qismlar biror hajmdagi ishni bajarishi kerak bo'lganda, boshqa qismlar bilan bir vaqtda nimani qilish kerak?! Bu savolga javob – iplar (threads) (yoki noto'g'ri atalganda – oqimlar).

Dasturiy ta'minotni tasavvur qiling, qandaydir kichik robot sifatida, u kod bo'ylab yugurib va buyruqlarni bajaradi. Avval bir qatorli buyruqni bajaradi, keyin keyingisiga o'tadi va hk.

— Tasavvur qildim. Hech qanday murakkablik yo'q!

— Zo'r. Endi tasavvur qiling, sizda bir nechta shunday robotlar bor. Bir robot foydalanuvchi kirishini amalga oshirayotganda, ikkinchisi obyektlarni unga muvofiq o'zgartiradi. Uchinchi robot bu obyektlarni ekranda tasvirlaydi va to'rtinchisi bir necha marta sekundda kemalar to'qnashgan yoki yo'qligini tekshiradi va to'qnashuv natijalarini hisoblaydi.

Shunday qilib, biz dasturni faqat mustaqil qismlar/obyektlarga bo'lishimiz mumkin emas, balki ularning mustaqil ravishda ishlashini ta'minlashimiz mumkin. Bo'limlar orasidagi o'zaro ta'sir kam bo'lganida, dastur murakkabliligi kamroq bo'ladi.

«Menejerni – skript bilan almashtirganingizni» tasavvur qiling, elektron pochta xabarlarini yuboradigan skript. Va kompaniyaning boshqa bo'limlari bu haqida hatto bilmas edilar. 26-asrda bunday misollar bo'lgan va ajoyib natijalarni ko'rsatgan. Ko'pchilik menejerlar, hatto yuqori darajadagi menejerlar ham, o'rta qiyinchilikdagi skript bilan muvaffaqiyatli almashtirilishi mumkin. Faqat "ofis planktonlari kasaba uyushmasining" aralashuvi tufayli menejerlarning ommaviy ishdan bo'shatilishlari to'xtatildi. Ammo bu mavzudan chetga chiqishdir.

— Qiziqarli.

— Dasturda bir nechta shunday «kichik robotlar» kodni bajarishi mumkin, ularning o'zaro muloqot qilishlari va yangi robotlarni hosil qilishlari mumkin.

— Yangi robotlarni hosil qilish?

— Ha, yangi vazifalar bajarilishi uchun. Ba'zida yana bir robot (yana bir ip) yaratish foydaliroq bo'ladi, bu ip hozirgi ip (robot) bilan bir vaqtda biror amalni bajaradi.

— Bu yaxshi narsa deb o'ylayman, lekin hozircha men bundan qayerda foydalanishim mumkinligini tasavvur qila olmayman.

Nimaga bu «iplar» deb ataladi?

— Tasavvur qiling, barcha robotlar har xil rangda, va har bir robot o'zining rangini bajarilgan buyruqlarni belgilaydi. Shunday qilib, kichik robotning ortidan, xuddi qalamdan iz qolgandek, iz qoladi. Bu iz robotning orqasidan, xuddi igna bilan ipdan tortilganidek, orqasidan tortiladi.

Har bir shunday «kichik robot» oldiga qo'yilgan vazifani bajarish uchun yaratildi. Va ip – bu bajarilgan vazifani bajarish jarayonidagi buyruqlar to'plami.

Aytaylik, siz yulduz kemasida yukni yetkazib berish uchun uchyapsiz. Shunda «yukni yetkazib berish» — bu sizning vazifangiz, siz uni bajarish jarayonidasiz. Va uchib o'tgan yo'lingiz – bu sizning ipingiz. Har yangi vazifaga, hali hal qilinmagan har qanday masalaga o'z ipi – hali bajarilmagan yo'l mavjud.

— Boshqacha qilib aytganda, bu vazifa va uning bajarilishini nazorat qiluvchi «kichik robot», va ip – bu faqat vaziyatning holatini tashqaridan ko'rish nuqtai nazari?

— Aynan.

Buning ichki ishlashini qanday qilib. Kompyuterda protsessor bitta bo'lgani uchun, u faqat bitta buyruqni bir vaqtning o'zida bajarishi mumkin. Shuning uchun quyidagilar sodir bo'ladi: protsessor iplar orasida tez-tez almashadi. Yangi ipga o'tib, uning bir nechta buyruqlarini bajaradi, keyin keyingi ipga o'tadi, uning bir nechta buyruqlarini bajaradi va hk. Ipalar orasida o'tish bir soniyada yuzlab marta sodir bo'lgani sababli, tashqaridan qaraganda, barcha iplar bir vaqtning o'zida ishlayotgandek ko'rinadi.

Ko'p oqimlilik yoki ko'p ipliklilik - 1
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION