读书人

glibc有关问题: pthread_cond_destroy

发布时间: 2013-04-12 18:33:12 作者: rapoo

glibc问题: pthread_cond_destroy 死锁

pthread_cond_wait 等相关函数底层是glibc用 futex实现的, 由于其实现的复杂性,可能引起死锁.

下面这段代码将引起 pthread_cond_destroy 死锁

inline Condition::Condition(int type) {    if (type == SHARED) {        pthread_condattr_t attr;        pthread_condattr_init(&attr);        pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);        pthread_cond_init(&mCond, &attr);        pthread_condattr_destroy(&attr);    } else {        pthread_cond_init(&mCond, NULL);    }}

Condition 和 Mutex 都可以是 Shared. 所以如果一个在 condition waiting 的进程意外退出, 那个调用 destroy 的进程很容易被锁死.


读书人网 >编程

热点推荐