2.7.2.8 copyprivate
copyprivate 句は、プライベート変数を使用して、チーム内の 1 つのメンバから他のメンバに値をブロードキャストするしくみを提供します。これは、値に対する共有変数の使用に代わる方法です。レベルごとに変数が変わる再帰処理など、共有変数の使用が難しい場合にこの句を使用します。copyprivate 句は、single ディレクティブにのみ現れることができます。
copyprivate 句の構文は次のとおりです。
copyprivate(
variable-list
)
variable-list 内の変数に対する copyprivate 句の影響は、single コンストラクトに関連付けられている構造化ブロックの実行後、およびチーム内のスレッドがこのコンストラクトの最後にあるバリアを出る前に発生します。その後、チーム内の他のすべてのスレッドで、variable-list 内の各変数について、その変数が、そのコンストラクトの構造化ブロックを実行したスレッド内の対応する変数の値に (割り当てが行われたかのように) 定義されます。
copyprivate 句に対する制限は次のとおりです。
copyprivate 句内で指定されている変数を、同じ single ディレクティブに対する private 句または firstprivate 句に指定することはできません。
copyprivate 句を持つ single ディレクティブが並行領域の動的範囲内で検出された場合、その copyprivate 句で指定されているすべての変数は、囲まれているコンテキストでプライベートにする必要があります。
copyprivate 句に指定される変数は、アクセス可能な明白なコピー代入演算子を持つ必要があります。