|
一个如下程序
pthread_t thread[5];
pthread_mutex_t mut;
pthreat_cond_t cond
。
void Creat_Thread(char* p)
{
pthread_create(&thread[n], NULL, thread1, (void *)p);
}
void *thread1(void* p)
{
.....
while(1)
{
pthread_mutex_lock(&mut);
pthread_cond_wait(&cond,&mut);
..........处理函数1;
处理函数2;
处理函数3;
处理函数4;
pthread_mutex_unlock(&mut);
}
pthread_exit(NULL);
}
。
。
int main()
{
初始化互斥锁和条件变量;
。。。。
for(i=0;i<5;i++)
Creat_Thread(p[i]);
do
{
pthread_cancel(thread[4]);
pthread_cond_signal(&cond); //发送信号
}while(1);
thread_wait();
return 0;
}
程序编译通过,现在问题是多线程程序运行的时候,在建立线程的时候(即for循环创建线程的时候)运行正确(所有处理函数运行正确),然而在接下来使用互斥和条件变量运行的时候所有线程都运行到处理函数3,处理函数4就没有运行;不知道是什么原因;
|
|