多线程和编译器优化问题

RayFung 发布于 2012/11/25 16:46
阅读 490
收藏 1
GCC
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;
}
如果可以的话,加锁也就没有作用了,这时候应该通过什么手段来避免这种编译器的优化?

请大牛们赐教

@中山野鬼


加载中
0
中山野鬼
中山野鬼
voliate int count; 易变的申明。这样,任何写入count的操作都不会被优化掉。确保你的逻辑不会变化。
RayFung
RayFung
好的,多谢
返回顶部
顶部