Unix线程,互斥量,确保同一时间只有一个线程访问数据

#include<stdlib.h>

#include<pthread.h>

struct foo{

int f_count;

pthread_mutex_t  f_lock;

};

 

 

 

 

 

struct foo * foo_alloc(void)

{

struct foo *fp;

if((fp=malloc(sizeof(struct foo)))!=NULL){

fp->f_count=1;

if(pthread_mutex_init(&fp->f_lock.NULL)!=0){

free(fp);

return (NULL);

}

}

return (fp);

}

 

 

 

void foo_hold(struct foo *fp)

{

pthread_mutex_lock(&fp->f_lock);

fp->f_count++;

pthread_mutex_unlock(&fp->f_lock);

}

 

 

 

 

void foo_release(struct foo *fp)

{

pthread_mutex_lock(&fp->f_lock);

if( - - fp->f_count==0)//类似于OC里的内存释放

{

pthread_mutex_unlock(&fp->f_lock);

pthread_mutex_destrory(&fp->f_lock);

free(fp);

}

else

{

pthread_mutex_unlock(&fp->f_lock);

}

}

 

你可能感兴趣的:(Unix线程,互斥量,确保同一时间只有一个线程访问数据)