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