Jarayon: O'qituvchiga ishni bir nechta iplarga parallellashtirishni ta'minlaydigan o'z versiyasini oling



Download 15,93 Kb.
Sana18.09.2021
Hajmi15,93 Kb.
#178061
Bog'liq
Amaliyot 2


AMALIY ISH № 2. DASTURIY ARXITEKTURANING ASOSIY QOIDALARI.

Jarayon:


1. O'qituvchiga ishni bir nechta iplarga parallellashtirishni ta'minlaydigan o'z versiyasini oling.

2. O'rganilgan mexanizmlardan foydalanib, olingan vazifani bajaradigan dastur ishlab chiqing.

3. Hisobot yozing.

Mudofaadagi yutuqlar:

1. O'qituvchiga bir nechta iplarni ishlaydigan dasturni namoyish qiling.

2. Ilova dastur kodini tushuntiring.

Zamonaviy operatsion tizimlarda foydalanuvchilarga parallel ishlashning bir nechta turlari taklif etiladi, ularning asosiylari jarayon va iplardir. Jarayonlar - bu ish vaqti dasturlari. Iplar kichikroq ish qismidir. Biroq, resurslarni taqsimlash nuqtai nazaridan, bu asosiy bo'lgan mavzular, chunki ular emas, balki ular biron bir ishni bajarish uchun ma'lum vaqt davomida markaziy protsessor bilan ta'minlangan. Bir nechta operatsiyalarni bajaradigan WinAPI funktsiyalarini ko'rib chiqing.

CreateThread funktsiyasi qo'ng'iroq jarayonining manzil maydonida bajariladigan ipni yaratadi.

HANDLE CreateThread (

   PSECURITY_ATTRIBUTES lpThreadAtributes,

      // ipni himoya qilish xususiyatlari

   DWORD dwStackSize, // baytning boshlang'ich oqimi hajmi

   PTHREAD_START_ROUTINE lpStartAddress,

      // oqim funktsiyasida ko'rsatgich

   PVOID lpParameter, // yangi ip uchun parametr

   DWORD dwCreationFlags, // bayroqlar oqim yaratadi

   PDWORD lpThreadId

      // qaytarilgan oqim identifikatoriga ko'rsatgich

);

Funktsiya muvaffaqiyatli bajarilgandan so'ng, yangi ipning dastasi qaytariladi. Agar funktsiya bajarilmasa, NULL ni qaytaradi.



Parametrlar:

LpThreadAttributes - qaytarilgan dastani bola jarayonlari orqali meros qilib olish mumkinligini aniqlaydigan SECURITY_ATTRIBUTES tuzilmasiga ishora. Agar lpThreadAttributes NULL bo'lsa, demak, dastani meros qilib olinmaydi.

DwStackSize - baytlarda yangi oqim uchun stack hajmini belgilaydi. Agar 0 belgilangan bo'lsa, standart stack hajmi ishlab chiqaruvchi oqimning suyakka o'lchamiga teng bo'ladi. Stek avtomatik ravishda jarayon xotirasi bo'shlig'iga joylashtiriladi va ip tugashi bilan bo'shatiladi.

LpStartAddress - Yangi oqimning boshlang'ich manzili. Odatda bu WINAPI chaqiruv konventsiyasi bilan e'lon qilingan va bitta parametr sifatida 32 bitli ko'rsatkichni oladigan va 32 bitli tugatish kodini qaytaradigan funktsiyaning manzili. Prototip: DWORD WINAPI ThreadFunc (LPVOID);

LpParameter - Oqimga uzatiladigan bitta 32-bitli parametr qiymatini belgilaydi.

DwCreationFlags - oqim yaratilishini boshqaruvchi qo'shimcha bayroqlarni belgilaydi. Agar bayroq CREATE_SUSPENDED bilan belgilangan bo'lsa, u holda kutish holatida ip yaratiladi va ResumeThread funktsiyasi chaqirilmaguncha bajarilmaydi. Agar bu qiymat nolga teng bo'lsa, yaratilishdan keyin zudlik bilan ip ishlaydi.

LpThreadId - 32-bitli o'zgaruvchiga ishora, u ip identifikatorining qiymatini oladi

Win32 API-ning quyidagi funktsiyalariga qo'ng'iroq qilib, siz zanjirni tugatishingiz mumkin:

VOID ExitThread (

   DWORD ExitCode); // oqimning tugatish kodi

va

VOID TerminateThread (



   HANDLE hThread, // tugatish kerak bo'lgan ip

   DWORD ExitCode // oqim tugatish kodi

);

Bunga 1 dan 100 gacha bo'lgan barcha raqamlarning mahsulotini hisoblaydigan dasturning bo'lagi misol bo'ladi.



...

// oqim funktsiyasi

WINAPI DWORDFuction (PVOID Parametr)

{int proizv = 1; // mahsulot natijasi

  int ii, * kk;

  kk = (int *) Parametr;

uchun (ii = * k; ii <(* kk) + 50; ii ++) proizv * = ii;

qaytish proizv;

}

...


// mavzularni yaratish uchun qo'ng'iroq kodi

DWORD idThread;

int k1 = 1; k2 = 51;

QOLISH h1, h2;

// Ikki ip to'xtatilgan holatda yaratilgan

h1 = CreateThread (NULL, 0, ThreadFunction, va k1, CREATE_SUSPENDED, va idThread);

h2 = CreateThread (NULL, 0, ThreadFunction, va k2, CREATE_SUSPENDED, va idThread);

// ipning bajarilishi

RezyumeThread (h1);

RezyumeThread (h2);

...

Ushbu kodda juda foydali Win32 API funktsiyasi topilgan.



To'xtatilgan ipning ishini davom ettiradigan va quyidagicha tavsiflangan ResumeThread

DWORD RezyumeThread (

   HANDLE hThread // davom ettirish uchun ip

);

Agar ushbu funktsiyaga qo'ng'iroq muvaffaqiyatli amalga oshirilsa, unda ushbu oqimning hisoblagichning oldingi qiymati qaytariladi, aks holda - 0xFFFFFFFF.



Bitta ipni bir necha marta to'xtatib turish mumkin (uni qayta tiklash kerak bo'lgan vaqtning aniq soni) va bu SuspendThread funktsiyasini chaqirish orqali amalga oshiriladi.

DWORD to'xtatib turishThread (

   HANDLE hThread // to'xtatilishi kerak bo'lgan ip

);

Tizim protsessorga millisekundda ko'rsatilgan ma'lum vaqt berilmasligi uchun OTni xabardor qilishi mumkin.



VOID Kutish (DWORD MilliSeconds);

Windows 2000 / XP-da identifikator orqali oqimni topadigan va ochadigan funktsiya mavjud.

HANDLE OpenThread (

   DWORD DesiredAccess,

   BOOL InheritHandle,

   DWORD dwTreadId



);
Download 15,93 Kb.

Do'stlaringiz bilan baham:




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