#pragma omp atomic
Ushbu koʻrsatma, uning chap tomonidagi umumiy oʻzgaruvchi bilan toʻgʻri ishlashni kafolatlaydigan (ishlatiladigan konstruktsiyalar juda tushunarli cheklovlarga duchor boʻlgan) darhol keyingi tayinlash operatoriga tegishli. Operatorning bajarilish davomida ushbu oʻzgaruvchiga kirish amalni bajaruvchi ipdan tashqari barcha joriy iplar uchun bloklanadi. Faqat tayinlash operatorining chap tomonidagi oʻzgaruvchi bilan ishlash atomar hisoblanadi, oʻng tomondagi hisoblar esa atomar boʻlishi shart emas.
4-misol atomic direktivasidan foydalanishni koʻrsatadi. Ushbu misol, ochilgan oqimlarning umumiy sonini hisoblab chiqadi. Buning uchun har bir oqim count oʻzgaruvchisining qiymatini bittaga oshiradi. atomic direktivasi bir nechta oqimlarning bir vaqtning oʻzida belgilash operatorining chap tomonidagi oʻzgaruvchining qiymatini oʻzgartirishiga yoʻl qoʻymaslik uchun ishlatiladi.
4-misol. C tilida atomic direktivasi
#include
#include
int main(int argc, char *argv[])
{
int count = 0;
#pragma omp parallel
{
#pragma omp atomic
count++;
}
printf("Oqimlar soni: %d\n", count);
}
Do'stlaringiz bilan baham: |