static pthread_mutex_t *mptr;


 


互斥锁位于共享内存区,将用于不同进程之间的上锁,设置互斥锁的属性为PTHREAD_PROCESS_SHARED,并初始化互斥锁。


void my_lock_init(char *pathname)


{


int fd;


pthread_mutexattr_t mattr;


fd=open("/dev/zero", O_RDWR, 0);


mptr=mmap(0, sizeof(pthread_mutex_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);


close(fd);


pthread_mutexattr_init(&mattr);


pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED);


pthread_mutex_init(mptr, &mattr);


}


 


上锁


void my_lock_wait()


{


pthread_mutex_unlock(mptr);


}


 


解锁


void my_lock_release()


{


pthread_mutex_unlock(mptr);


}