Varning C26116

Misslyckades med att hämta eller hålla låset lock i func.

Tillämpning av syntaktiskt scope-baserade lås acquire och lås släpper par i C/C++-program utförs inte av språket. En funktion kan introducera en låsnings sidoeffekt genom att göra en observerbar ändring av samtidighetstillståndet. En låsomslutningsfunktion ökar till exempel antalet låsförvärv, eller antalet lås, för ett visst lås. Du kan annotera en funktion som har en sidoeffekt från en låsaktivering eller låssläpp genom att använda respektive . Utan sådana anteckningar förväntas en funktion inte ändra något låsantal när den har returnerats. Om tilldelningar och frigörelser inte balanseras anses de vara utan samband. Varning C26116 utfärdas när en funktion har kommenterats med , men inte hämtar ett lås, eller när en funktion kommenteras med och släpper låset.

Example

I följande exempel genereras varning C26116 eftersom funktionen kommenterades med men inte hämtar den. Funktionen genererar varningen eftersom den kommenteras med och inte innehåller den.

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
}

Se även

  • C26115