다음을 통해 공유


C26116

경고 C26116: 취득 하거나 <lock> 잠금을 보유 하도록 실패 합니다. <func>.

구문적으로 범위 잠금 적용 취득 및 잠금 릴리스 쌍에서 C/C++ 프로그램 언어에 의해 수행 됩니다.함수가 잠금 부작용에 눈에 띄는 동시성 상태 수정 하 여 발생할 수 있습니다.예를 들어, 잠금 래퍼 함수 잠금 가져오기가 또는 지정 된 잠금에 대 한 잠금 횟수를 증가 시킵니다.취득 하거나 잠금 해제를 사용 하 여 부작용에서 잠금 가진 함수 주석을 달 수 있습니다 _Acquires_lock_ 또는 _Requires_lock_held, 각각.이러한 주석 없이 함수 반환 후 모든 잠금 횟수 변경 예정입니다.경우 획득 및 릴리스 균형이 되, 수 간주 됩니다 고아.경고 C26116 함수에 달린 때 발급 된 _Acquires_lock_, 있지만 함수 주석 처리 된 경우 또는 잠금 획득 하지 _Requires_lock_held 및 잠금을 해제 합니다.

예제

다음 예제에서는 때문에 C26116 경고를 생성 함수 DoesNotLock 주석 처리 된 _Acquires_lock_ 획득 하지 않습니다 있지만.함수가 DoesNotHoldLock 와 주석 처리 하기 때문에 사용 하면 경고가 발생 _Requires_lock_held 및 보유 하지는 않습니다.

typedef struct _DATA 
{
    CRITICAL_SECTION cs;
} DATA;

_Acquires_lock_(p->cs) void DoesLock(DATA* p) 
{
    EnterCriticalSection(&p->cs); // OK
}

_Acquires_lock_(p->cs) void DoesNotLock(DATA* p) 
{
    // Warning C26116
}

_Requires_lock_held_(p->cs) void DoesNotHoldLock(DATA* p) 
{
    LeaveCriticalSection(&p->cs); // Warning C26116
}

참고 항목

참조

C26115