clang 线程安全分析 docspaper 暗示可以指示特定函数只能由特定线程调用。从论文:

#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/

10-12 21:30