static pthread_mutex_t *mptr;
将互斥锁放在共享内存。
设置互斥锁的属性为PTHREAD_PROCESS_SHARED,并初始化互斥锁。
进程间锁的例子,通过在父进程声明,然后在fork出来的子进程变可以使用这个锁的对象来进程数据访问的互斥控制
缺陷:如果一个进程在互斥区里面挂了 就发生死锁了。。
所以不是一个好办法
设置互斥锁的属性为PTHREAD_PROCESS_SHARED,并初始化互斥锁。
进程间锁的例子,通过在父进程声明,然后在fork出来的子进程变可以使用这个锁的对象来进程数据访问的互斥控制
缺陷:如果一个进程在互斥区里面挂了 就发生死锁了。。
所以不是一个好办法
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);
}
进程间锁的例子,通过在父进程声明,然后在fork出来的子进程变可以使用这个锁的对象来进程数据访问的互斥控制
进程间锁的例子,通过在父进程声明,然后在fork出来的子进程变可以使用这个锁的对象来进程数据访问的互斥控制