#include "apue.h"
/**
动态分配的互斥量 使用pthread_mutex_init 函数初始化
冬天分配的互斥量 在释放内存钱 需要调用pthread_mutex_destroy
静态分配的互斥量 可以将其设置为常量:PTHREAD_MUTEX_INITIALIZER
*/
//线程共享资源
int i;
pthread_mutex_t mutex;
void *thread_fun(void *ar){
//加锁 保证加锁部分 同一时间只能有一个线程访问
pthread_mutex_lock(&mutex);
for(i=0;i<20;i++){
if((int)ar==1){
printf(" fun i = %d ar = %d \n",i,(int)ar);
}else{
printf(" fun i = %d ar = %d\n",i,(int)ar);
}
usleep(50);
}
//解锁 后面执行 其他线程可以争夺
pthread_mutex_unlock(&mutex);
return (void *)1;
}
int main(){
pthread_t tid1,tid2;
int err1,err2,err_mut;
//初始化互斥量
err_mut = pthread_mutex_init(&mutex,NULL);
if(err_mut!=0){
perror("mutex failure");
return -1;
}
//创建线程
err1 = pthread_create(&tid1,NULL,thread_fun,(void *)1);
err2 = pthread_create(&tid2,NULL,thread_fun,(void *)2);
if(err1||err2){//err1或者err2不等于0时
perror(" fail to create thread ");
return -1;
}
printf("success to create thread err1 =%d err2 =%d\n ",err1,err2);
printf("start to quit main thread \n ");
//主线程退出
pthread_exit(NULL);//always succeeds
}
Linux--多线程之互斥量
最新推荐文章于 2022-03-26 23:50:36 发布