在APUE一书中,一个对互斥锁销毁的例子如下:
void
foo_hold(struct foo *fp)
{
pthread_mutex_lock(&fp->f_lock);
fp->f_count++;
pthread_mutex_unlock(&fp->f_lock);
}
void
foo_rele(struct foo *fp)
{
pthread_mutex_lock(&fp->f_lock);
if (--fp->f_count == 0) {
pthread_mutex_unlock(&fp->f_lock);
pthread_mutex_destroy(&fp->f_lock);
free(fp);
} else {
pthread_mutex_unlock(&fp->f_lock);
}
}
在foo_rele()函数中,以foo结构中count为条件进行该结构的销毁操作,我现在的疑问是书中也提到了在这个销毁过程中也可能会有线程阻塞在该锁上,可以确保对象在释放内存前不会被找到这种方式来避免,那么怎么确保对象不会被找到呢?通过指针,还是有什么方法?还望高手不离赐教!