Linux--多线程之互斥量

    xiaoxiao2021-12-14  19

    #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 }
    转载请注明原文地址: https://ju.6miu.com/read-971291.html

    最新回复(0)