Share via


C26130

경고 C26130: 누락된 주석 _Requires_lock_held_(<lock>) 또는 함수 <func>에 _No_competing_thread_.그렇지 않으면 경쟁 조건이 될 수 있습니다.변수 <var>은 lock <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_
    }