明示的なロックを指定するには、ANNOTATE_LOCK_ACQUIRE と ANNOTATE_LOCK_RELEASE を使用します。これらのアノテーションはどこにでも配置できる実行文です。次に例を示します。
if (synchronization_needed) ANNOTATE_LOCK_ACQUIRE(0); x = f(x, a); if (synchronization_needed) ANNOTATE_LOCK_RELEASE(0);
ロックの取得と解放が対応していて、同じタスク内にあることを確実にする必要があります。タスクが所有していないロックを開放したり、取得に失敗したロックを開放すると、プログラムで同期エラーが発生します。ある関数でロックを取得し、別の関数でそのロックを開放することができますが、それは適切とはいえません。