93
mode();
#pragma omp parallel
{
#pragma
omp master
{
mode();
}}
return 0;
}
C/C++ dasturlash tillarida yuqoridagi barcha shartlar
single
direktivasi bilan
birgalikda ye’lon qilinadi.
Dasturning belgilangan qismini qaysi oqim bajarishi tavsiflanmaydi. Agarda
nowait
sharti e’lon qilinmasa, bitta oqim belgilangan
fragmentni bajaradi, qolgan
oqimlar uning ishini tugashini kutib turadi.
single
direktivasi umumiy о‘zgaruvchilar
bilan ishlaganda kerak.
Master direktivasi kodning ma’lum bir qismini faqat bosh oqim bajarishi
uchun belgilaydi. Qolgan oqimlar ushbu qismni о‘tkazib
yuborishadi va undan
quyida turgan operator bilan dasturni ishlashini davom ettiradi. Ushbu direktivada
sinxronizatsiya amalga oshirilmaydi. C/C++ dasturlash tilida direktiva quyidagicha
e’lon qilinadi:
#pragma omp master
Quyidagi misolda master direktivasining ishlashi keltirilgan.
n
о‘zgaruvchi
lokal hisoblanib, har bir oqim о‘zining nusxalari bilan ishlaydi. Dastavval barcha
oqimlar n о‘zgaruvchiga 1 qiymatini о‘zlashtirishadi. Sо‘ngra bosh oqim n
о‘zgaruvchiga 2 qiymatini о‘zlashtiradi va barcha oqimlar ushbu qiymatni ekranga
chop etadi. Misolda kо‘rinib turibdiki, master direktivasini
har doim bitta oqim
bajaradi. Ushbu misolda barcha oqimlar 1 sonini ekranga chiqarsa, bosh oqim
dastlab 2 sonini, sо‘ngra esa 3 sonini ekranga chop etadi:
#include "stdafx.h"
#include
using namespace std;
int
_tmain(
int
argc, _TCHAR* argv[])
{
int n;
#pragma omp parallel private(n)
{
n=1;
#pragma omp master
{
n=2;
94
}
cout<<”n ning birinchi qiymati: “<< n;
#pragma omp barrier
#pragma omp master
{
n=3;
}
cout<
}
return 0;
}
Quyidagi misolda
private
shartini ishlashi keltirilgan. Ushbu misolda parallel
muhitda n о‘zgaruvchi lokal о‘zgaruvchi sifatida e’lon qilingan. Bu har bir oqimning
n ning nusxlari bilan ishlashini bildiradi va har bir oqimning boshida n о‘zgaruvchi
initsializatsiya qilinadi. Dasturning bajarilish vaqtida n о‘zgaruvchining
qiymati
tо‘rtta turli xil joylarda chop etiladi. Birinchi marta n о‘zgaruvchining qiymati 1 ga
о‘zlashtirilgandan keyin ketma - ket muhitda chop etiladi, ikkinchi marta barcha
oqimlar n о‘zgaruvchining nusxasini parallel muhitning boshida chop etadi. Keyin
barcha oqimlar о‘zining
tartib nomerini