threadprivate
変数がスレッドに対してプライベートであることを指定します。
#pragma omp threadprivate(var)
解説
指定項目
- var
スレッドにプライベートに設定する変数のコンマ区切りのリスト。var はローカルの静的変数またはグローバルな名前空間スコープの変数である必要があります。
解説
threadprivate のディレクティブはOpenMP 句をサポートしていません。
詳細については2.7.1 の threadprivate のディレクティブ を参照してください。
threadprivate のディレクティブは thread__declspec の属性に基づいています ; __declspec(thread) の制限が threadprivate に適用されます。
LoadLibrary によって読み込まれる DLL で threadprivate は使用できません。これは /DELAYLOAD (遅延読み込みのインポート) で読み込まれる DLL が含まれているか LoadLibrary を使用できます。
プロセスの起動時に静的に読み込まれる DLL で threadprivate を使用できます。
threadprivate が __declspec(thread) に基づいているためthreadprivate プロセスの変数は並列領域で生成するスレッドの一部であるだけでなくのスレッドではなくで開始されたスレッドにあります。これは頻繁に呼び出される必要な threadprivate のユーザー定義型のたとえばコンストラクターがあることができるため注意する必要がある場合は実装の詳細があります。
destructable 型の threadprivate の変数は呼び出されたデストラクターがあることが保証されます。次に例を示します。
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{}
}
並列領域を構成するスレッドが終了するときにユーザー コントロールが関連していません。プロセスが終了プロセスが終了するにはスレッド知らせられないしデストラクターは次にプライマリ スレッド終了したスレッドを除くすべてのスレッドの threaded_var に呼び出されない場合はこれらのスレッドがある場合。このコードは threadprivate 変数の適切な中止でカウントする必要があります。
使用例
threadprivate の使用例についてはプライベート を参照してください。