次の方法で共有


2.7.2.2 firstprivate

firstprivate 句は、private 句が提供する機能のスーパーセットを提供します。 firstprivate 句の構文は次のとおりです。

firstprivate(variable-list)

variable-list で指定される変数は、25 ページのセクション 2.7.2.1 で説明されている private 句のセマンティクスに従います。 初期化または構築は、スレッドによるコンストラクトの実行前に、各スレッドで一度だけ行われていたかのように行われます。 parallel コンストラクトにある firstprivate 句の場合、新しいプライベート オブジェクトの初期値は、parallel コンストラクトを検出したスレッドに対してその parallel コンストラクトの直前に存在していた元のオブジェクトの値になります。 work-sharing コンストラクトにある firstprivate 句の場合、work-sharing コンストラクトを実行する各スレッドに対して、新しいプライベート オブジェクトの初期値は、そのスレッドが work-sharing コンストラクトを検出する前に存在していた元のオブジェクトの値になります。 さらに、C++ オブジェクトの場合、各スレッドに対する新しいプライベート オブジェクトは、元のオブジェクトからコピーされて構築されます。

firstprivate 句に対する制限は次のとおりです。

  • firstprivate 句で指定されている変数は、不完全型または参照型にはなれません。

  • firstprivate として指定されているクラス型の変数は、アクセス可能な明白なコピー コンストラクターを持つ必要があります。

  • 並行領域内部でプライベートな変数、または parallel ディレクティブの reduction 句内の変数を、parallel コンストラクトにバインドされる work-sharing ディレクティブの firstprivate 句に指定することはできません。