2.7.2 Klauzule atrybutu udostępniania danych
Kilka dyrektyw przyjąć klauzule, które pozwalają użytkownikowi kontrolować udostępnianie atrybuty zmiennych na czas trwania tego regionu.Klauzule atrybut udostępniania dotyczą tylko zmienne w leksykalne zakres dyrektywy, na której znajduje się klauzuli.Nie wszystkie z następujących klauzul są dozwolone na wszystkich dyrektyw.Wykaz klauzule, które są prawidłowe, w szczególności dyrektywy są opisane z niniejszej dyrektywy.
Jeśli zmienna jest widoczna, gdy równoległego lub napotkania konstrukcja podziału pracy, a zmienna nie jest określony w klauzuli atrybut udostępniania lub threadprivate dyrektywa, następnie zmienna jest udostępniony.Zmienne statyczne, zgłaszane w ramach dynamicznego zakresu równoległych regionu są udostępnione.Przydzielona pamięć sterty (na przykład za pomocą malloc() w c lub C++ lub Nowy operatora w języku C++) jest udostępniony.(Wskaźnik pamięci, jednak może być prywatne lub współużytkowane.) Zmienne, dla których czas trwania składowania automatyczne zgłaszane w ramach dynamicznego zakresu równoległych regionu są prywatne.
Większość klauzule zaakceptować listy zmiennej argument, który jest rozdzielaną przecinkami listę zmiennych, które są widoczne.Zmienna odwołania w klauzuli udostępnianie danych atrybutu ma typ pochodnych od szablonu i nie istnieją żadne inne odwołania do zmiennej w programie, zachowanie jest niezdefiniowane.
Wszystkie zmienne, które pojawiają się w ramach dyrektywy klauzule muszą być widoczne.Klauzule może się powtarzać, w razie potrzeby, ale zmienna nie mogą być określone w klauzuli więcej niż jeden, z wyjątkiem, że zmienna może być określony w obu firstprivate i lastprivate klauzuli.
W poniższych sekcjach opisano klauzul udostępnianie danych atrybutu:
prywatne, w sekcji 2.7.2.1 na stronie 25.
firstprivate, w sekcji 2.7.2.2 na stronie 26.
lastprivate, w sekcji 2.7.2.3 na stronie 27.
udostępnione, w sekcji 2.7.2.4 na stronie 27.
domyślne, w sekcji 2.7.2.5 na stronie 28.
zmniejszenie, w sekcji 2.7.2.6 na stronie 28.
copyin, w sekcji 2.7.2.7 na stronie 31.
copyprivate, w sekcji 2.7.2.8 na stronie 32.