clang 线程安全分析 docs 和 paper 暗示可以指示特定函数只能由特定线程调用。从论文:
#include "ThreadRole.h"
ThreadRole InputThread;
ThreadRole GUIThread;
class Widget {
public :
virtual void onClick() REQUIRES(InputThread);
virtual void draw() REQUIRES(GUIThread);
};
class Button : public Widget {
public :
void onClick() override {
depressed = true;
draw() ; // WARNING!
}
};
但是,这两个文档都没有说明您如何实际注释
ThreadRole
来实现这一点。 ThreadRole
必须是什么样子才能完成这项工作? 最佳答案
相关的:
https://insights.sei.cmu.edu/sei_blog/2014/10/thread-safety-analysis-in-c-and-c.htmltypedef int __attribute__((capability("role"))) ThreadRole;ThreadRole FlightControl, Logging;void acquire(ThreadRole R) __attribute__((acquire_capability(R))) __attribute__((no_thread_safety_analysis)) {}void release(ThreadRole R) __attribute__((release_capability(R))) __attribute__((no_thread_safety_analysis)) {}
...
关于c++ - Clang 线程安全分析和线程角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35327754/