函式 『func』 遺漏註釋_Requires_lock_held_('lock') 或_No_competing_thread_。 否則可能是競爭條件。 變數 'var' 應受到鎖定 'lock' 的保護。
備註
當分析器偵測到潛在的競爭狀況,但推斷函式可能在單個線程模式中執行時發出警告 C26130。 例如,當函式處於初始化階段時,會根據特定啟發學習法。
範例
在下列範例中,會產生警告 C26130,因為 _Guarded_by_ 成員在沒有鎖定的情況下遭到修改。
typedef struct _DATA
{
CRITICAL_SECTION cs;
_Guarded_by_(cs) int data;
} DATA;
void Init(DATA* p)
{
p->data = 0; // Warning C26130
}
如果前一個程式代碼保證在單個線程模式中運作,請使用 _No_competing_thread_來標註 函式,如下列範例所示。
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
}
或者,您可以使用 和 _No_competing_thread_begin_來標註代碼段_No_competing_thread_end_,如下所示。
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_
}