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


Download 1.46 Mb.
bet85/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   77   78   79   80   81   82   83   84   85
Bog'liq
ParVychGafGal (1)

VOID WINAPI ExitThread(DWORD dwExitCode);

Mavzuni pauza qilish uchun ÿ funksiyasidan foydalanishingiz kerak
SuspendThread. Agar ip muvaffaqiyatli to'xtatilsa, funktsiya qaytadi

bu mavzu uchun to'xtash oldingi soni, bir ijro bor




SuspendThread funktsiyasi muvaffaqiyatsiz tugadi, u -1 ni qaytaradi.
DWORD WINAPI SuspendThread(HANDLE thread);

  • ip – osiladigan ipning tutqichi. U

ruxsatlarga ega boÿlishi kerak: THREAD_SUSPEND_RESUME
Agar siz ushbu mavzuni davom ettirmoqchi bo'lsangiz, qo'ng'iroq qilishingiz kerak
ResumeThread funktsiyasi . Muvaffaqiyatli bo'lsa, avvalgisi qaytariladi. oqim uchun to'xtashlar soni, aks holda -1.
DWORD WINAPI ResumeThread(HANDLE thread);
144

Machine Translated by Google

  • ip – davom ettiriladigan ipning tutqichi. U qarzdor ruxsatlarga ega: THREAD_SUSPEND_RESUME

Endi bajaruvchi dastur misolini ko'rib chiqing
ikki o'lchovli satrlarni parallel ko'p ipli yaratish va qayta ishlash matritsalar. Ya'ni, har bir alohida ip matritsa qatorini yaratadi
va bu satrning toq elementlarining mahsulotini toping. Har bir oqimga qaysi strukturaga ko'rsatgichni parametr sifatida o'tkazamiz
matritsaning qatori va elementlar mahsulotining natijasi saqlanadi.
Kerakli kutubxonalarni ulaymiz: natijalarni ekranda ko'rsatish uchun,
WinAPI funksiyalaridan foydalanish va vaqtdan foydalanish tasodifiy sonlar generatorining ishga tushirish elementi. #include
#o'z ichiga


#o'z ichiga

Matritsaning o'lchamini saqlash uchun doimiyni aniqlaymiz (bu misolda 4×4 matritsa).


#MATRIX_SIZE ni aniqlang 4
Keling, matritsa qatorini saqlaydigan tuzilmani aniqlaylik,
ushbu satrning toq elementlarini va tasodifiy sonni ko'paytirish natijasi, bu mavzudagi tasodifiy sonlar generatorini ishga tushiradi
(agar siz barcha iplar uchun bir xil generatordan foydalansangiz, shuning uchun bajarilishning bir vaqtdaligi uchun bir xil raqamlar hosil bo'ladi
barcha qatorlar).


struktura qatori


{
int qiymati[MATRIX_SIZE];
int natijasi;
int rnd;
};
145
Machine Translated by Google
WINAPI DWORD funksiyasi generatorAndCalc (void *ma'lumotlar) bo'ladi oqimlarni bajarish (sharhlar bilan):
DWORD WINAPI generateAndCalc(maÿlumotlar bekor)
{


// qabul qilingan ma'lumotlarni struktura turiga aylantirish


qator *r = (satr *) ma'lumotlar;


// qabul qilingan raqam bilan tasodifiy sonlar generatorini ishga tushiring
srand(r->rnd);
// satr elementlarini yaratish
uchun (int i = 0; i < MATRIX_SIZE; i++)
{


r->qiymat[i] = rand() % 10;
}


// toq elementlarning mahsulotini toping r->natija = 1;
uchun (int i = 0; i < MATRIX_SIZE; i += 2)
{


r->natija *= r->qiymat [i];
}
izohlar bilan main() funktsiyasi: int main()
{


// tasodifiy sonlar generatorini ishga tushiring srand (vaqt (NULL));
// mavzu identifikatorlarini aniqlash,
// matritsa qatorlari uchun ip identifikatorlari va tuzilmalari HANDLE ip [MATRIX_SIZE];
DWORD thrId[MATRIX_SIZE];
146
Machine Translated by Google
qatorlar [MATRIX_SIZE];
uchun (int i = 0; i < MATRIX_SIZE; i++)
{
// har bir satr uchun tasodifiy sonlarni yarating
qatorlar[i].rnd = rand();
// mavzular yaratish


thread[i] = CreateThread(NULL, 0, &generateAndCalc, &rows[i], 0, &thrId[i]);
}
// bu mavzularning barchasi tugashini kuting
WaitForMultipleObjects(MATRIX_SIZE, mavzu, TRUE, INFINITE);
// dastur natijasini ekranga chiqarish
uchun (int i = 0; i < MATRIX_SIZE; i++)
{
uchun (int j = 0; j < MATRIX_SIZE; j++)
{


printf(" %d", qatorlar[i].qiymat[j]);
}
printf(" | multipl = %d\n", qatorlar[i].natija);
}
qaytish 0;
}
Dastur quyidagi skrinshotda ko'rsatilgan:
147
Machine Translated by Google




Adabiyot



  1. Antonov A.S. Parallel dasturlash texnologiyalari MPI va

OpenMP: Proc. nafaqa. Muqaddima: V.A.Sadovnichiy.-M.: Nashriyot Moskva universiteti, 2012 yil.

  1. Gergel V.P., Strongin R.G. Parallel hisoblash asoslari

ko'p protsessorli hisoblash tizimlari. - N. Novgorod, UNN, 2001 yil.

  1. Bogachev K.Yu. Parallel dasturlash asoslari. - M.: BINOM. Bilim laboratoriyasi, 2003 yil.

  2. Voevodin V.V., Voevodin Vl.V. Parallel hisoblash. - Sankt-Peterburg: BHV

Sankt-Peterburg, 2002 yil.





  1. Nemnyugin S., Stesik O. Parallel dasturlash uchun

ko'p protsessorli hisoblash tizimlari - Sankt-Peterburg: BHV-Peterburg,

2002 yil.





  1. Korneev VV Parallel hisoblash tizimlari. - M .: Bilim,

1999 yil.



  1. Korneev V.V. MPIda parallel dasturlash. Moskva-Izhevsk: Kompyuter tadqiqotlari instituti, 2003 yil.

148
Machine Translated by Google

  1. Vagner, Bill C# Effektiv dasturlash / Bill Vagner. - M.: LORI, 2013. - 320 c.

  2. Ziborov, V.V. Visual C# 2012 misollar bo'yicha / V.V. Ziborov. - M.: BHV

Sankt-Peterburg, 2013. - 480 b.





  1. Podbelskiy, V.V. Language C#. Asosiy kurs / V.V. Podbelskiy. - M.: Moliya va statistika, Infra-M, 2011. - 384 c.

  2. Price, Jeyson Visual C# 2.0. To'liq qo'llanma / Jeyson Price.

Mayk Ganderloy. - M.: Vek +, Korona-Vek, Entrop, 2010. - 736 b.

  1. Richter, Jeffrey CLR C# orqali. Microsoft platformasida dasturlash

C# tilida .NET Framework 4.0 / Jeffri Rixter. - M .: Piter, 2013. - 928 c.

  1. Troelsen, Endryu C# 5.0 dasturlash tili va .NET 4.5 platformasi / Endryu Troelsen. - M.: Uilyams, 2015. - 486 b.

  2. http://oi.ssau.ru/docs /lecparall.pdf

  3. https://vscode.ru/prog-lessons/parallelnyie-vyichisleniya-s-pomoshhyu winapi.html


149
Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   77   78   79   80   81   82   83   84   85




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