REQUIRES是函数或方法的属性,它声明调用线程必须具有对给定条件的独占访问权限。可以指定多个条件。条件必须在进入函数时保留,并且必须在退出时保留。
GUARDED_BY是数据成员的一个属性,它声明数据成员受给定条件的保护。对数据的读取操作需要共享访问,而写操作需要独占访问。
EXCLUDES是函数或方法的一个属性,它声明调用方不能拥有给定的条件。用于防止此死锁。许多互斥体实现是不可重入的,因此如果函数第二次获得互斥体,就会发生死锁。
Thread Safety Analysis — Clang 12 documentation http://clang.llvm.org/docs/ThreadSafetyAnalysis.html