首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

POSIX条件变量有关问题?大侠进

2013-03-12 
POSIX条件变量问题???大侠进pthread_mutex_t mutexpthread_cond_t condvoid *thwork(void *arg){pthread

POSIX条件变量问题???大侠进

pthread_mutex_t mutex;
pthread_cond_t cond;

void *thwork(void *arg)
{
    pthread_detach(pthread_self());
    pthread_mutex_lock(&mutex);
    pthread_cond_wait(&cond,&mutex);//查资料说wait会阻塞线程,释放mutex锁。。。然后等待条件成立,然后返回继续执行。
    pthread_mutex_unlock(&mutex);//我就想不明白,既然调wait的时候已经释放了mutex锁,为什么这里还要释放一次呢。
    pthread_exit((void*)0);
}

    int tmp=0;
    pthread_t pthid;
    pthread_mutex_init(&mutex,NULL);
    pthread_cond_init(&cond,NULL);
    pthread_create(&pthid,NULL,thwork,NULL);
    sleep(60);
    pthread_cond_signal(&cond);


[解决办法]
cond_wait返回会重新获取锁。

还是扎实的学习UNIX环境高级编程等书吧。
[解决办法]
pthread_cond_wait先unlock,等待, 被唤醒后再lock.
所以pthread_cond_wait返回时,mutex是被自己lock的。所以要再次释放
man pthread_cond_wait

热点排行