linux线程互斥锁用法,防止竞争,多线程锁用法
mutex lock实例
mutex_lock例子
linux互斥锁范例
linux互斥锁实例
linux互斥锁例子
linux互斥锁pthread_mutex_lock用法范例
linux互斥锁用法实例
linux互斥锁使用例子
#include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<pthread.h> 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; }