Oracle® Solaris Studio 12.4: OpenMP API ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.7.1 threadprivate およびスレッド固有の情報

スレッドがタスクスケジューリングポイントを検出すると、実装時に現在のタスクが中断され、そのスレッドが別のタスクを処理するようにスケジュールされる場合があります。この動作は、タスク内の threadprivate 変数またはほかのスレッド固有の情報 (スレッド番号など) がタスクスケジューリングポイントの前後で変わる可能性があることを意味します。

中断されたタスクが結合されている場合、タスクの実行を再開するスレッドは、中断したときのスレッドと同じになります。このため、スレッド番号はタスクの再開後も変更されません。ただし、場合によっては threadprivate 変数の値が変わることがあります。スレッドが中断されたタスクを再開する前に、threadprivate 変数を変更する別のタスクを処理するようにスケジュールされていた可能性があるからです。

中断されたタスクが結合解除されている場合、タスクの実行を再開するスレッドは、中断したときのスレッドとは異なる場合があります。このため、スレッド番号と threadprivate 変数の値のどちらも、タスクスケジューリングポイントの前後で異なる可能性があります。