Udostępnij za pośrednictwem


2.7.2.8 copyprivate

Copyprivate klauzuli oferuje mechanizm do nadawania wartości z jednego członka zespołu do innych członków za pomocą prywatnej zmiennej.Jest zamiast używać wspólnej zmiennej wartości, gdy dostarczanie wspólnej zmiennej byłoby trudne (na przykład w rekursji, wymagających różnych zmiennej na każdym poziomie).Copyprivate klauzula może pojawić się tylko na pojedynczego dyrektywy.

Składnia copyprivate klauzuli jest w następujący sposób:

copyprivate(variable-list)

Efekt copyprivate klauzuli o zmiennych w jego liście zmiennej występuje po wykonaniu bloku strukturalne związane z pojedynczego konstruowania, i przed tych wątków w zespole opuściły bariery na końcu konstrukcji.Następnie w innych wątków w zespole, dla każdej zmiennej w listy zmiennej, tej zmiennej staje się definicją (tak, jakby przypisania) z wartością odpowiednią zmienną w wątku, który wykonywany konstrukcja structured bloku.

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

  • Zmienna, która jest określona w copyprivate klauzuli nie umieszcza się w prywatnego lub firstprivate klauzuli dla tego samego pojedynczego dyrektywy.

  • Jeśli pojedynczego w dyrektywie z copyprivate klauzuli okaże się, w zakresie dynamicznych regionu równolegle, wszystkie zmienne określone w copyprivate klauzuli musi być prywatnej w kontekście okalającego.

  • Zmienna, która jest określona w copyprivate klauzuli musi mieć dostępne kopii jednoznaczne operator przypisania.