C26130
경고 C26130: 주석 _Requires_lock_held_ (<lock>) 또는 <func> 함수에 _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_
}