如何实现线程互等,线程2等待线程1结束后才继续执行。(可设置标志位) 求源代码
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)+提问者悬赏50(财富值+成长值)
2个回答
展开全部
pthread_exit(NULL);
}
int main()
{
//初始化一个互斥锁
pthread_mutex_init(&mut,NULL);
//创建A同学线程
pthread_create(&thread[0], NULL,studentA,NULL);
//创建B同学线程
pthread_create(&thread[1], NULL,studentB,NULL);
//等待A同学线程结束
pthread_join(thread[0],NULL);
//等待B同学线程结束
pthread_join(thread[1],NULL);
}
}
int main()
{
//初始化一个互斥锁
pthread_mutex_init(&mut,NULL);
//创建A同学线程
pthread_create(&thread[0], NULL,studentA,NULL);
//创建B同学线程
pthread_create(&thread[1], NULL,studentB,NULL);
//等待A同学线程结束
pthread_join(thread[0],NULL);
//等待B同学线程结束
pthread_join(thread[1],NULL);
}
更多追问追答
追答
number = 0;
pthread_mutex_unlock(&mut);
printf("student B has finish his work\n");
//退出
pthread_exit(NULL);
}
int main()
{
//初始化一个互斥锁
pthread_mutex_init(&mut,NULL);
//创建A同学线程
pthread_create(&thread[0], NULL,studentA,NULL);
//创建B同学线程
pthread_create(&thread[1], NULL,studentB,NULL);
//等待A同学线程结束
pthread_join(thread[0],NULL);
//等待B同学线程结束
pthread_join(thread[1],NULL);
}
自己学习的笔记
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int lock = 1;
void * thread_1(void *info){
// do job
pthread_mutex_lock(&mutex);
lock = 0;
pthread_cond_signal(&cond,&mutex);
pthread_mutex_unlock(&mutex);
return NULL;
}
void *thread_2(void *info){
pthread_mutex_lock(&mutex);
while(lock){
pthread_cond_wait(&cond,&mutex);
}
pthread_mutex_unlock(&mutex);
// do job
return NULL;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询