インテル® oneAPI スレッディング・ビルディング・ブロック (oneTBB) では、オブジェクトへの相互排他的なアクセスを行うため、共有オブジェクトにミューテックスを関連付けることができます。ミューテックスは、ロックまたはアンロックのいずれかの状態になります。安全にオブジェクトにアクセスするため、スレッドは次の操作を行います。
スレッドはミューテックスのロックを取得します。
スレッドは関連する共有オブジェクトにアクセスします。
スレッドはミューテックスのロックを解放します。
ミューテックスがロックされていると、ほかのスレッドがロックを取得しようとしても、最初のスレッドがミューテックスのロックを解放するまでストールします。ミューテックスによって提供される機能は、インテル® Advisor アノテーションの ANNOTATE_LOCK_ACQUIRE() と ANNOTATE_LOCK_RELEASE() で意図されるセマンティクスです。
oneTBB では、アノテーションのロックアドレスがミューテックス・オブジェクトとなります。ANNOTATE_LOCK_ACQUIRE() と ANNOTATE_LOCK_RELEASE() アノテーションは、このミューテックス操作となります。
oneTBB は、異なるプロパティーを持ついくつかのロッククラスを提供しています。詳細は、oneTBB のドキュメントを参照してください。どのタイプのミューテックスが適切であるか明確でない場合、最初の選択肢として tbb::mutex を使用することを検討してください。