我是多线程的新手,遇到了分段错误。我在用
void addfunction(void *xyz)
{
flag_TO_go = 1;
pthread_cond_broadcast(&check_Queue2);
pthread_mutex_unlock(&get_mutex);
}
void delete_thread(void *abc)
{
while(1){
pthread_mutex_lock(&get_mutex);
while (!flag_TO_go ) {//condition variable
pthread_cond_wait(&check, &get_mutex);
}
flag_To_go= 1;
//things to do
//delete elemenst from a linked list
pthread_mutex_unlock(&get_mutex);
}
}
我得到的是分段错误,因为我的列表在第一个元素删除后没有任何元素。但是我的线程正在获取锁并检查它是否有任何其他方法可以使用 cond wait 。
如果有人可以建议一种无需忙碌等待的方法吗?