C26130
Upozornění C26130: Chybí anotace _Requires_lock_held_ (<lock>) nebo _No_competing_thread_ funkce <func>.Jinak může dojít ke konfliktu časování.Proměnná <var> by měla být chráněna zámkem <lock>.
Upozornění C26130 je zobrazeno, pokud analyzátor zjistí možný spor, ale odvodí, že funkce bude pravděpodobně spuštěna v režimu s jedním podprocesem, například podle určitých heuristik, pokud je funkce ve fázi inicializace.
Příklad
V následujícím příkladu je upozornění C26130 vygenerováno, protože člen s klíčovým slovem _Guarded_by_ je právě upravován bez uzamčení.
typedef struct _DATA
{
CRITICAL_SECTION cs;
_Guarded_by_(cs) int data;
} DATA;
void Init(DATA* p)
{
p->data = 0; // Warning C26130
}
Pokud je u předchozího kódu zaručeno, že bude provozován v režimu s jedním podprocesem, označte funkci pomocí anotace _No_competing_thread_, jak ukazuje následující příklad.
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
}
Alternativně můžete fragment kódu označit pomocí anotací _No_competing_thread_begin_ a _No_competing_thread_end_ takto.
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_
}