明示的なロック

明示的なロックを指定するには、ANNOTATE_LOCK_ACQUIREANNOTATE_LOCK_RELEASE を使用します。これらのアノテーションはどこにでも配置できる実行文です。次に例を示します。

 if (synchronization_needed) ANNOTATE_LOCK_ACQUIRE(0); 
x = f(x, a); 
if (synchronization_needed) ANNOTATE_LOCK_RELEASE(0);

ロックの取得と解放が対応していて、同じタスク内にあることを確実にする必要があります。タスクが所有していないロックを開放したり、取得に失敗したロックを開放すると、プログラムで同期エラーが発生します。ある関数でロックを取得し、別の関数でそのロックを開放することができますが、それは適切とはいえません。

関連情報