Aracılığıyla paylaş


a.12 Atomik direktifini kullanarak

Aşağıdaki örnek yarış önler (eşzamanlı güncelleştirmeleri bir öğenin x birden çok iş parçacığı tarafından) kullanarak atomic yönergesi (Bölüm 2.6.4 sayfasında 19):

#pragma omp parallel for shared(x, y, index, n)
    for (i=0; i<n; i++) 
    {
        #pragma omp atomic
            x[index[i]] += work1(i);
        y[i] += work2(i);
    }

Kullanmanın avantajı atomic Bu örnekte yönergesi olduğu x paralel olarak gerçekleşmesi için iki farklı öğeler güncelleştirmesine izin vermesi.Bir critical yönergesi (Bölüm 2.6.2 sayfasında 18) öğeleri için tüm güncelleştirmeleri daha sonra bunun yerine kullanılan x seri olarak (herhangi bir sipariş garanti olmasa da) çalıştırılabilirdi.

Dikkat atomic yönergesinin hemen ardından yalnızca c ya da C++ ifadesine uygulanır.Öğeleri bir sonucu olarak y Bu örnekte atomically güncelleştirilmez.