C26130
Warnung C26130: Die Anmerkung _Requires_lock_held_ (<Sperre>) oder _No_competing_thread_ fehlt bei der Funktion <func>.Andernfalls kann es sich um eine Racebedingung handeln.Variable <var> sollte von der Sperre <Sperre> geschützt sein.
Warnung wird ausgegeben, C26130, wenn der Analyse eine mögliche Racebedingung erkennt, aber ableitet, dass die Funktion wahrscheinlich ist, einen Singlethreadmodus ausgeführt werden beispielsweise wenn die Funktion in der Initialisierungsphase auf der Grundlage bestimmter Heuristik ist.
Beispiel
Im folgenden Beispiel wird C26130 Warnung generiert, da ein _Guarded_by_ eine Sperre ohne Member geändert wird.
typedef struct _DATA
{
CRITICAL_SECTION cs;
_Guarded_by_(cs) int data;
} DATA;
void Init(DATA* p)
{
p->data = 0; // Warning C26130
}
Wenn der vorhergehende Code gewährleistet wird, in einem Singlethreadmodus bearbeitet werden, kommentieren Sie die Funktion, indem Sie _No_competing_thread_, wie im folgenden Beispiel dargestellt.
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
}
Alternativ können Sie ein Codefragment kommentieren, indem Sie _No_competing_thread_begin_ und _No_competing_thread_end_, wie folgt verwenden.
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_
}