linux互斥锁用法范例pthread_mutex_lock

linux线程互斥锁用法,防止竞争,多线程锁用法
mutex lock实例
mutex_lock例子
linux互斥锁范例
linux互斥锁实例
linux互斥锁例子
linux互斥锁pthread_mutex_lock用法范例
linux互斥锁用法实例
linux互斥锁使用例子

    #include
    #include
    #include
    #include
    typedef struct ct_sum
    { int sum;
      pthread_mutex_t lock;
    }ct_sum;
    void * add1(void * cnt)
    {     

        pthread_mutex_lock(&(((ct_sum*)cnt)->lock));
        int i;
            for( i=0;i<50;i++)
            {(*(ct_sum*)cnt).sum+=i;

            }
        pthread_mutex_unlock(&(((ct_sum*)cnt)->lock));
        pthread_exit(NULL);
        return 0;
    }
    void * add2(void *cnt)
    {     
        int i;
        cnt= (ct_sum*)cnt;
        pthread_mutex_lock(&(((ct_sum*)cnt)->lock));
        for( i=50;i<101;i++)
        {    (*(ct_sum*)cnt).sum+=i;

        }
        pthread_mutex_unlock(&(((ct_sum*)cnt)->lock));
        pthread_exit(NULL);
        return 0;
    }
    int main(void)
    { int i;
      pthread_t ptid1,ptid2;
      int sum=0;
      ct_sum cnt;
      pthread_mutex_init(&(cnt.lock),NULL);
      cnt.sum=0;
      pthread_create(&ptid1,NULL,add1,&cnt);
    pthread_create(&ptid2,NULL,add2,&cnt);

     pthread_mutex_lock(&(cnt.lock));
     printf("sum %d\n",cnt.sum);
     pthread_mutex_unlock(&(cnt.lock));
     pthread_join(ptid1,NULL);
     pthread_join(ptid2,NULL);
      pthread_mutex_destroy(&(cnt.lock));
      return 0;
    } 

你可能感兴趣的:(linux互斥锁用法范例pthread_mutex_lock)