C26130C26130

Advertencia C26130: falta la anotación Requires_lock_held\(<bloqueo >) o No_competing_thread\ en una función <func >.warning C26130: Missing annotation Requires_lock_held\(<lock>) or No_competing_thread\ at function <func>. De lo contrario, podría ser una condición de carrera.Otherwise it could be a race condition. Variable <var > debe protegerse con el bloqueo de <bloqueo >.Variable <var> should be protected by lock <lock>.

Se emite la advertencia C26130 cuando el analizador detecta una condición de anticipación potenciales pero deduce que la función es probablemente se ejecuten en un único modo de subprocesos, por ejemplo, cuando la función está en la fase de inicialización en función de cierta heurística.Warning C26130 is issued when the analyzer detects a potential race condition but infers that the function is likely to be run in a single threaded mode, for example, when the function is in the initialization stage based on certain heuristics.

EjemploExample

En el ejemplo siguiente, se genera la advertencia C26130 porque un _Guarded_by_ miembro que se está modificando sin un bloqueo.In the following example, warning C26130 is generated because a _Guarded_by_ member is being modified without a lock.


typedef struct _DATA   
{  
    CRITICAL_SECTION cs;  
    _Guarded_by_(cs) int data;  
} DATA;  

void Init(DATA* p)   
{  
    p->data = 0; // Warning C26130  
}  

EjemploExample

Si el código anterior se garantiza que se trabajará en un modo de subproceso único, agregar anotaciones a la función mediante el uso de _No_competing_thread_, como se muestra en el ejemplo siguiente.If the previous code is guaranteed to be operated in a single threaded mode, annotate the function by using _No_competing_thread_, as shown in the following example.


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  
}  

EjemploExample

Como alternativa, puede anotar un fragmento de código mediante el uso de _No_competing_thread_begin_ y _No_competing_thread_end_, como se indica a continuación.Alternatively, you can annotate a code fragment by using _No_competing_thread_begin_ and _No_competing_thread_end_, as follows.


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_  
}