Avviso C26115
Non è possibile rilasciare il blocco 'lock' nella funzione 'func'.
L'applicazione di coppie di blocco con ambito sintattico acquisisci e blocca le coppie di rilascio nei programmi C/C++ non viene eseguita dal linguaggio. Una funzione può introdurre un effetto collaterale di blocco apportando una modifica osservabile allo stato di concorrenza. Ad esempio, una funzione wrapper di blocco incrementa il numero di acquisizioni di blocchi o il conteggio dei blocchi per un determinato blocco.
È possibile annotare una funzione che ha un effetto collaterale da un blocco acquisire o bloccare il rilascio usando _Acquires_lock_
rispettivamente o _Releases_lock_
. Senza tali annotazioni, è previsto che una funzione non modifichi alcun conteggio di blocchi dopo la restituzione. Se le acquisizioni e le versioni non sono bilanciate, vengono considerate orfane. L'avviso C26115 viene generato quando una funzione introduce un blocco orfano.
Esempio
L'esempio seguente genera l'avviso C26115 perché è presente un blocco orfano in una funzione che non è annotata con _Acquires_lock_
.
typedef struct _DATA
{
CRITICAL_SECTION cs;
} DATA;
void FailToReleaseLock(int flag, DATA* p)
{
EnterCriticalSection(&p->cs);
if (flag)
return; // Warning C26115
LeaveCriticalSection(&p->cs);
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per