多线程题目

来源:互联网 发布:mac系统截屏快捷键 编辑:程序博客网 时间:2024/06/05 04:41
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define NUM 4


pthread_mutex_t mutex;
pthread_cond_t cond;


int n = 0;


void *thread_func(void *argv)
{
int p = (int)argv;
int i;


for(i = 0; i < 10; i++)
{
pthread_mutex_lock(&mutex);
while(p != n)
{
pthread_cond_wait(&cond,&mutex);
}
printf("%d ",p+1);
n= (n + 1) % NUM;
pthread_mutex_unlock(&mutex);
pthread_cond_broadcast(&cond);
}
}
int main()
{
pthread_t tid[NUM];
int ret;
int i;


pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);


for(i = 0; i< NUM; i++)
{
ret = pthread_create(&tid[i],NULL,thread_func,(void *)i);
if(ret == -1)
{
printf("pthread_create pid[%d] error!\n",i);
exit(-1);
}
}


for(i = 0; i < NUM; i++)
{
ret = pthread_join(tid[i],NULL);
if(ret == -1)
{
printf("pthread_join pid[%d] error!\n",i);
exit(-1);
}
}
printf("\n");
    return 0;
}
0 0
原创粉丝点击