Analisi della sicurezza dei thread Clang con la libreria standard C++

Analisi della sicurezza dei thread Clang con la libreria standard C++


Questo descrive come eseguire l'analisi statica della sicurezza dei thread con le annotazioni in C++:http://clang.llvm.org/docs/ThreadSafetyAnalysis.html


Come posso usarlo con tipi standard come std::mutex e std::lock_guard?


Il codice di esempio di mutex.h annota un'interfaccia personalizzata. Ho il tipo "Mutex" che è definito lì e implemento una classe usando std::mutex con i metodi annotati o Clang porta i tipi annotati in qualche modo?


Risposte:


Nelle versioni recenti di clang, probabilmente non è più necessario eseguire il wrapping di std::mutex, perché le annotazioni di thread-safety sono incluse dal 15 marzo 2016.



Quindi semplicemente avere -Wthread-safety dovrebbe essere sufficiente.


Alcune risposte al codice


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();
}