G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon
Download 1.46 Mb.
|
ParVychGafGal (1)
- Bu sahifa navigatsiya:
- DWORD WINAPI SuspendThread(HANDLE thread);
- DWORD WINAPI ResumeThread(HANDLE thread);
- (void *malumotlar)
VOID WINAPI ExitThread(DWORD dwExitCode);
dwExitCode da biz ipning chiqish kodini joylashtiramiz 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 Antonov A.S. Parallel dasturlash texnologiyalari MPI va OpenMP: Proc. nafaqa. Muqaddima: V.A.Sadovnichiy.-M.: Nashriyot Moskva universiteti, 2012 yil. Gergel V.P., Strongin R.G. Parallel hisoblash asoslari ko'p protsessorli hisoblash tizimlari. - N. Novgorod, UNN, 2001 yil. Bogachev K.Yu. Parallel dasturlash asoslari. - M.: BINOM. Bilim laboratoriyasi, 2003 yil. Voevodin V.V., Voevodin Vl.V. Parallel hisoblash. - Sankt-Peterburg: BHV Sankt-Peterburg, 2002 yil. Nemnyugin S., Stesik O. Parallel dasturlash uchun ko'p protsessorli hisoblash tizimlari - Sankt-Peterburg: BHV-Peterburg, 2002 yil. Korneev VV Parallel hisoblash tizimlari. - M .: Bilim, 1999 yil. Korneev V.V. MPIda parallel dasturlash. Moskva-Izhevsk: Kompyuter tadqiqotlari instituti, 2003 yil. 148 Machine Translated by Google Vagner, Bill C# Effektiv dasturlash / Bill Vagner. - M.: LORI, 2013. - 320 c. Ziborov, V.V. Visual C# 2012 misollar bo'yicha / V.V. Ziborov. - M.: BHV Sankt-Peterburg, 2013. - 480 b. Podbelskiy, V.V. Language C#. Asosiy kurs / V.V. Podbelskiy. - M.: Moliya va statistika, Infra-M, 2011. - 384 c. Price, Jeyson Visual C# 2.0. To'liq qo'llanma / Jeyson Price. Mayk Ganderloy. - M.: Vek +, Korona-Vek, Entrop, 2010. - 736 b. Richter, Jeffrey CLR C# orqali. Microsoft platformasida dasturlash C# tilida .NET Framework 4.0 / Jeffri Rixter. - M .: Piter, 2013. - 928 c. Troelsen, Endryu C# 5.0 dasturlash tili va .NET 4.5 platformasi / Endryu Troelsen. - M.: Uilyams, 2015. - 486 b. http://oi.ssau.ru/docs /lecparall.pdf https://vscode.ru/prog-lessons/parallelnyie-vyichisleniya-s-pomoshhyu winapi.html 149 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