다음을 통해 공유


C26130

경고 C26130: 주석 _Requires_lock_held_ (<lock>) 또는 <func> 함수에 _no_competing_thread_가 없습니다.그렇지 않으면 경쟁 조건이 수 있습니다.변수 <var> <lock> 잠금에 의해 보호 되어야 합니다.

경고 C26130 분석기 잠재적인 경합 상태를 감지할 수는 있지만 유추 함수는 단일 스레드 모드에서 예를 들어, 함수가 특정 추론에 따라 초기화 단계가 있을 때 실행 되는 경우에 발생 합니다.

예제

때문에 다음 예제에서 C26130 경고 발생은 _Guarded_by_ 멤버를 잠금 하지 않고 수정 되 고.

    typedef struct _DATA 
    {
        CRITICAL_SECTION cs;
        _Guarded_by_(cs) int data;
    } DATA;

    void Init(DATA* p) 
    {
        p->data = 0; // Warning C26130
    }

앞의 코드는 단일 스레드 모드에서 작동 하는 것으로 보장 되는 경우이 함수를 사용 하 여 주석을 달거나 _No_competing_thread_, 다음과 같이 합니다.

    typedef struct _DATA 
    {
        CRITICAL_SECTION cs;
        _Guarded_by_(cs) int data;
    } DATA;

    _No_competing_thread_ void Init(DATA* p) 
    {
        p->data = 0; // Warning C26130 will be resolved
    }

또는 사용 하 여 코드 조각을 주석을 수 있습니다 _No_competing_thread_begin_ 및 _No_competing_thread_end_, 다음과 같이 합니다.

    typedef struct _DATA 
    {
        CRITICAL_SECTION cs;
        _Guarded_by_(cs) int data;
    } DATA;

    void Init(DATA* p) 
    {
        _No_competing_thread_begin_
        p->data = 0; // Warning C26130 will be resolved
        _No_competing_thread_end_
    }