Clang-Thread-Sicherheitsanalyse mit C++-Standardbibliothek

Clang-Thread-Sicherheitsanalyse mit C++-Standardbibliothek


Hier wird beschrieben, wie eine statische Thread-Sicherheitsanalyse mit Anmerkungen in C++ durchgeführt werden kann:http://clang.llvm.org/docs/ThreadSafetyAnalysis.html


Wie kann ich dies mit Standardtypen wie std::mutex und std::lock_guard verwenden?


Der Beispielcode von mutex.h kommentiert eine benutzerdefinierte Schnittstelle. Habe ich den dort definierten Typ "Mutex" und implementiere eine Klasse mittels std::mutex mit den annotierten Methoden oder bringt Clang irgendwie annotierte Typen?


Antworten:


In neueren Versionen von clang müssen Sie std::mutex wahrscheinlich nicht mehr umschließen, da die Thread-Sicherheitsanmerkungen seit dem 15. März 2016 enthalten sind.



Also einfach -Wthread-safety haben sollte reichen.


Einige Code-Antworten


class CAPABILITY("mutex") Mutex { private:   std::mutex std_mutex;
public: // Acquire/lock this mutex exclusively. Only one thread can have exclusive // access at any one time. Write operations to guarded data require an // exclusive lock.
#include "mutex.h"  void Mutex::Lock(){   this->std_mutex.lock();
} void Mutex::Unlock(){ this->std_mutex.unlock();
} bool Mutex::TryLock(){ return this->std_mutex.try_lock();
}