0

我在多个线程中通过互斥锁访问了一个变量。

当我对其运行覆盖率静态分析时,它会出现以下错误:-

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);
}

有人认为这有什么问题吗?我已经添加了锁,为什么它说锁丢失了?

4

0 回答 0