NOTE(LOCK_ORDER(LockNameList))
この注釈は、関数定義の外側あるいは内側のいずれかで使用可能で、ロックが獲得されるべき順番を指定します。機能的には、assert order および order サブコマンドに類似しています。詳しくは、付録 A 「ロック lint コマンドリファレンス」を参照してください。
デッドロックを避けるために、ロック lint は、同時に複数のロックが保持されなければならない場合、常に、獲得される順序が明確になっていることを前提とします。注釈によってそうした順序がロック lint に知らされている場合、その順序に違反すると、通知メッセージが生成されます。
この注釈は複数回使用されることもありますが、その意味は適切に組み合わされます。たとえば、以下の注釈が与えられた場合、
NOTE(LOCK_ORDER(a b c))
NOTE(LOCK_ORDER(b d))
ロック lint は以下の順序を演繹的に推論します。
NOTE(LOCK_ORDER(a d))
この例では、c と d の順序について推論することは不可能です。
この順序の中に循環が存在する場合は、該当するエラーメッセージが生成されます。