首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

glibc有关问题: pthread_cond_destroy 死锁

2013-04-12 
glibc问题: pthread_cond_destroy 死锁pthread_cond_wait 等相关函数底层是glibc用 futex实现的, 由于其实

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 的进程很容易被锁死.


热点排行