我在多个线程中通过互斥锁访问了一个变量。
当我对其运行覆盖率静态分析时,它会出现以下错误:-
MISSING_LOCK(访问变量“g_atag”(g_atag) 需要 osag_mutex.mutex 锁。)[覆盖率]
代码片段:
unsigned long g_atag = 0;
pthread_mutex_t g_atag_lock = PTHREAD_MUTEX_INITIALIZER;
void get_atag(unsigned long *atag)
{
int ret = -1;
ret = pthread_mutex_lock(&g_atag_lock);
if (0 != ret) {
return;
}
if (g_atag < 10000) {
g_atag++;
} else {
g_atag = 0;
}
*atag = g_atag;
pthread_mutex_unlock(&g_atag_lock);
}
有人认为这有什么问题吗?我已经添加了锁,为什么它说锁丢失了?