1
回答
多线程和编译器优化问题
华为云实践训练营,热门技术免费实践!>>>   
int get_current_thread_count(thread_pool_t *pool)
{
    int count;
    pthread_mutex_lock(&pool->mutex);
    count = pool->current_thread_count;
    pthread_mutex_unlock(&pool->mutex);
    return count;
}

上面这段C程序有可能被编译器优化为类似下面的程序(为了描述简单,用C代码来表示)吗?

int get_current_thread_count(thread_pool_t *pool)
{
    pthread_mutex_lock(&pool->mutex);
    pthread_mutex_unlock(&pool->mutex);
    return pool->current_thread_count;
}
如果可以的话,加锁也就没有作用了,这时候应该通过什么手段来避免这种编译器的优化?

请大牛们赐教

@中山野鬼


GCC
举报
RayFung
发帖于5年前 1回/365阅
顶部