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

来源:互联网 发布:linux ping的使用 编辑:程序博客网 时间:2024/06/05 16:43

#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);

}

}

 

原创粉丝点击