task ディレクティブは、タスクのデータ環境を定義する次のデータ共有属性節を取ります。
default (private | firstprivate | shared | none)
private (list)
firstprivate (list)
shared (list)
shared 節に示された変数へのタスク内のすべての参照は、task 構文が検出された時点で存在する同じ名前を持つ変数を参照します。
private および firstprivate 変数のそれぞれに対し、新しいストレージが作成され、task 構文の字句エクステントにある元の変数へのすべての参照は、新しいストレージへの参照に置き換えられます。firstprivate 変数は、task 構文が検出された時点の元の変数の値で初期化されます。
OpenMP 仕様には、parallel、task、および work-sharing の各構文で参照される変数のデータ共有属性の決定方法が説明されています。
構文内で参照される変数のデータ共有属性は、事前定義、明示的定義、または暗黙的定義のいずれでもかまいません。事前定義されたデータ共有属性を持つ変数がいくつかあります。たとえば、parallel for/do 構文内のループ反復変数は private です。明示的に指定されたデータ共有属性を持つ変数は、指定された構文の中で参照される変数で、構文上のデータ共有属性節にリストされています。暗黙的に指定されたデータ共有属性を持つ変数は、指定された構文の中で参照される変数で、事前に決められたデータ共有属性を持たず、構文上のデータ共有属性節にリストがありません。