#include<stdio.h>
#include<pthread.h>
#include<string.h>
char str[]="1234567";
//临界资源(共享资源)
pthread_mutex_t mutex;//互斥锁
void *callBack1(void *arg)
{
while(1){
/****临界区***/
pthread_mutex_lock(&mutex);//上锁
printf("%s\n",str);
pthread_mutex_unlock(&mutex);//解锁
/****临界区***/
}
}
void *callBack2(void *arg)
{
int i=0;
char temp=0;
while(1){
/****临界区***/
pthread_mutex_lock(&mutex);//上锁
for(i=0;i<strlen(str)/2;i++)
{
temp=str[i];
str[i]=str[strlen(str)-1-i];
str[strlen(str)-1-i]=temp;
}
pthread_mutex_unlock(&mutex);//解锁
/****临界区***/
}
}
int main(int argc, const char *argv[])
{
//创建互斥锁
if(pthread_mutex_init(&mutex,NULL)!=0)
{
perror("pthread_mutex_init");
return -1;
}
printf("mutex_init success\n");
pthread_t tid1,tid2;
//创建线程,循环打印
if(pthread_create(&tid1,NULL,callBack1,NULL)!=0)
{
perror("pthread_mutex_create");
return -1;
}
//创建线程,循环倒置
if(pthread_create(&tid2,NULL,callBack1,NULL)!=0)
{
perror("pthread_mutex_create");
return -1;
}
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
//销毁互斥锁
pthread_mutex_destroy(&mutex);
return 0;
}