C26130
警告 C26130: 遺漏在函式的附註,<func>的 _Requires_lock_held_ (<lock>) 或 _No_competing_thread_。否則它可以是競爭情形。變數<var> 應該被鎖定 <lock>所保護。
警告 C26130 ,這些分析器會偵測可能的競爭情形,但如函式可以在單一執行緒的模式,當函式進入根據某些啟發學習法 (Heuristic) 時的初始化階段。
範例
在下列範例中,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_
}