Mavzu: Parallel dasturlashga kirish. Parallel dasturlash asoslari. Parallel dasturlarning turlari. Parallel dasturlash paradigmalari. Sinxron va asinxron aloqa. Parallel dasturlash usullari va vositalari. Ko'p protsessorli arxitektura


Download 216.81 Kb.
bet3/3
Sana26.12.2022
Hajmi216.81 Kb.
#1067229
1   2   3
Bog'liq
2-Mavzu

PARALEL DASTURLASH ParadigmalarI.


O'zaro aloqador teng
Bunday paradigmali ilovada ishlarning taqsimlanishi oldindan belgilanadi yoki ish vaqtida dinamik ravishda aniqlanadi. Ishni dinamik ravishda taqsimlashning eng keng tarqalgan usullaridan biri bu vazifalar portfelidir. Vazifalar portfeli odatda bir vaqtning o'zida faqat bitta jarayonga kira oladigan umumiy o'zgaruvchi yordamida amalga oshiriladi.

PARALEL DASTURLASH ParadigmalarI.


O'zaro aloqador teng
Hisoblash vazifasi cheklangan sonli vazifalarga bo'linadi. Qoida tariqasida, har bir qo'shimcha vazifa har xil ma'lumotlar bo'yicha bir xil turdagi harakatlarni bajarishi kerak. Vazifalar raqamlangan va har bir raqamga tegishli ma'lumotlar to'plamining vazifa raqamini aniq ko'rsatadigan funksiya tayinlangan. Har bir oqim birinchi navbatda vazifalar portfeliga kiradi va joriy vazifa raqamini topadi, so'ngra uni qiymatini o’zgartiradi, so'ngra tegishli ma'lumotlarni oladi va vazifani bajaradi, so'ngra keyingi vazifa raqamini bilish uchun vazifalar portfeliga havola qilinadi.

Misol


Oddiy parallel dastur:
#include
#include
using namespace std;
void anyFunc() {
cout<<"thread function";
}
int main() {
thread func_thread(anyFunc);
return 0;
}

2-Misol


#include
#include
using namespace std;
void anyFunc() {
cout << "thread function";
}
int main() {
thread func_thread(anyFunc);
func_thread.join();
return 0;
}

3-Misol


#include
#include
using namespace std;
void anyFunc() {
cout << "thread function";
}
int main() {
thread func_thread(anyFunc);
if (func_thread.joinable())
func_thread.join();
// func_thread.detach(); / oqimni majburan to’xtatish
return 0;
}

4-Misol


#include
#include
using namespace std;
void printStr(char * str) {
cout << str << '\n';
}
void printArray(int a[],const int len) {
for (int i = 0; i < len; i++) {
cout << a[i] << ' '; }
}
int main() {
char* str = "thread function with parametrs"; const int len = 8;
int arr[len] = {12, 45, -34, 57, 678, 89, 0, 1};
thread func_thread(printStr, str);
thread func_thread2(printArray, arr, len);
if (func_thread.joinable()) func_thread.join();
if (func_thread2.joinable()) func_thread2.join();
return 0; }

Download 216.81 Kb.

Do'stlaringiz bilan baham:
1   2   3




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