Udostępnij za pośrednictwem


2.7.2.2 firstprivate

Firstprivate klauzuli stanowi nadzbiór funkcji zapewnianych przez prywatnego klauzuli.Składnia firstprivate klauzuli jest w następujący sposób:

firstprivate(variable-list)

Zmienne określone w listy zmiennej mają prywatnego semantykę klauzuli, jak opisano w sekcji 2.7.2.1 na stronie 25.Inicjowanie lub budowy dzieje się tak, jakby były dokonywane raz na wątku przed wykonywanie wątku konstrukcji.Dla firstprivate klauzuli na równoległe konstrukcja o wartości początkowej nowego obiektu prywatnego jest wartość oryginalnego obiektu, który istnieje przed pobraniem równoległych konstrukcja dla wątku, który napotka go.Dla firstprivate klauzulę dotyczącą konstrukcji podziału pracy, nowy obiekt prywatne dla każdego wątku, który wykonuje konstrukcja podziału pracy o wartości początkowej jest wartość oryginalnego obiektu, który istnieje przed do punktu w czasie, że tego samego wątku napotka konstrukcja podziału pracy.Ponadto dla obiektów C++, nowy obiekt prywatne dla każdego wątku jest kopia zbudowane z oryginalnego obiektu.

Ograniczenia w odniesieniu do firstprivate klauzuli są w następujący sposób:

  • Zmienna, określona w firstprivate klauzuli nie mogą mieć niekompletnemu typowi lub typ odwołania.

  • Zmienna typu klasy określonej jako firstprivate musi mieć konstruktora dostępne, jednoznaczne kopia.

  • Zmienne, które są prywatne w ramach równoległego regionu lub które są widoczne w redukcji klauzuli równolegle dyrektywy nie może być określony w firstprivate klauzula w sprawie dyrektywy podziału pracy, która wiąże konstrukcja równolegle.