64,635
社区成员
发帖
与我相关
我的任务
分享
#include<pthread.h>
#include<stdio.h>
#include<errno.h>
int i=0;
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
void thread1()
{
printf("come in thread1\n");
int ret;
while(1)
{
ret=pthread_mutex_trylock(&mutex);
if(ret!=EBUSY)
{
pthread_mutex_lock(&mutex);
printf("this is thread1:%d\n",i);
i++;
pthread_mutex_unlock(&mutex);
}
sleep(1);
}
}
void thread2()
{
printf("come in thread2\n");
int ret;
while(1)
{
ret=pthread_mutex_trylock(&mutex);
if(ret!=EBUSY)
{
pthread_mutex_lock(&mutex);
printf("this is thread2:%d\n",i);
i++;
pthread_mutex_unlock(&mutex);
}
sleep(1);
}
}
int main()
{
pthread_t t1,t2;
printf("main start\n");
pthread_mutex_init(&mutex,NULL);
printf("this is in main and after mutex init\n");
pthread_create(&t1,NULL,(void *)thread1,NULL);
printf("this is in main and at middle of create thread1 and thread2\n");
pthread_create(&t2,NULL,(void *)thread2,NULL);
printf("this is in main and after create thred1 and thread2\n");
pthread_join(t1,NULL);
printf("this is in main and after thread1 join\n");
pthread_join(t2,NULL);
printf("this is after thread2 join\n");
pthread_mutex_destroy(&mutex);
return 0;
}