8.7. OpenMP da sinxronizatsiya vositalari OpenMP quyidagi sinxronizatsiya konstruksiyalarini taqdim etadi: tanqidiy - tanqidiy qism
135
Machine Translated by Google
atomik - operatsiyaning atomligi
to'siq - sinxronizatsiya nuqtasi
master - bu faqat asosiy oqim tomonidan bajariladigan blok. Hamma
boshqa mavzular bu blokni o'tkazib yuboradi. Yashirin sinxronizatsiya blokining oxirida
yo'q.
buyurtma qilingan - blokni belgilangan ketma-ketlikda bajarish flush - umumiy o'zgaruvchilar qiymatlarini xotiraga darhol o'chirish. tanqidiy qism. Parallelda tanqidiy qismning mavjudligi
bo'lishini blok kafolatlaydi
faqat bitta ip bilan boshqariladi. Bular. bitta ip kiritilganda
muhim bo'lim, unga kirishga tayyor bo'lgan barcha boshqa mavzular, to'xtatilgan holatda. Muhim bo'limlar mumkin
nomlarini taqdim eting. Bunday holda, tanqidiy bo'limlar mustaqil deb hisoblanadi, faqat ular turli nomlardan foydalansalar. Odatiy bo'lib, hammasi
nomlanmagan tanqidiy bo'limlar bir xil nomga ega.
C/C++ da muhim bo'lim sintaksisi: #pragma omp kritik [(imya)] Strukturaviy blok
Misol (noto'g'ri foydalanish).
#pragma omp xususiy(i) uchun parallel (a,xmax) for(i=0; iagar(a[i]>xmax) #pragma omp tanqidiy xmax = a[i];
}// uchun
Misol (to'g'ri foydalanish, lekin samarali emas)
#pragma omp xususiy(i) umumiy(a,xmax) uchun parallel
for(i=0; i i++){
#pragma omp tanqidiy
136
Machine Translated by Google
agar(a[i]>xmax)
xmax = a[i];
}// uchun
Do'stlaringiz bilan baham: |