我正在Ubuntu上用C进行编码。 我有两个以上这样的线程:
void * thread(void)
{
retry:
pthread_mutex_lock(&mutex);
//DO SOMETHING
pthread_mutex_unlock(&mutex);
goto retry;
}
所以我有thread1,thread2,...,threadN。 有时可以使用pthread_cancel()从 thread1 中杀死 thread2,...,threadN 。
此pthread_cancel()插入互斥锁内,因此在安全区域中调用。
每次thread1在threadK上调用pthread_cancel时,pthreadK都在等待互斥量,因此他调用了函数pthread_mutex_lock()。
这东西会在我的程序中造成问题吗? 我的程序中有一个错误,我认为我有一个死锁,但是我不明白为什么。我在想这就是原因。
谢谢大家。