threadprivate 宣言子を使用して、名前付きのグローバル・ライフタイム・オブジェクトをスレッドに対してプライベートに、スレッド内ではグローバルにすることができます。
各スレッドは、オブジェクトのコピーを取得し、1 つのスレッドによりオブジェクトに書き込まれるデータが、他のスレッドから直接見えないようにします。プログラムのシリアルな部分と マスターセクションでは、アクセスはオブジェクトのマスタースレッドのコピーに対して行われます。
スレッド・プライベートの変数は、次の節以外の節では使用できません。
copyin
copyprivate
schedule
num_threads
if
次の例では、変数 counter がスレッド・プライベートとして指定されています。
例 |
---|
int counter = 0; #pragma omp threadprivate(counter); |