在进程间共享读写锁



我有两个进程 rwlock1(parent( 和 rwlock2(child( 。 我想在进程之间使用读写器锁,我需要将pthread_rwlock_t mem_lock转移到子进程,我有一个简单的代码,如何遍历句柄。 我不想使用互斥锁。

rwlock1(父级(的代码

#include <unistd.h>
#include <pthread.h>
#include <sys/wait.h>
pthread_rwlock_t mem_lock;
int main() {
pid_t pid;
//init attr
pthread_rwlockattr_t mem_lock_attr;
pthread_rwlockattr_init(&mem_lock_attr);
pthread_rwlockattr_setpshared(&mem_lock_attr, 1);
//init read writer lock
pthread_rwlock_init(&mem_lock, &mem_lock_attr);
pid = fork();
if (pid == 0) {
execl("rwlock2", "rwlock2", (char *) nullptr);
}
//wait child
wait(nullptr);
return 0;
}


我没有尝试过,但是如果您将锁放在共享内存中(例如由mmapshmget设置(并使用pthread_rwlockattr_setpshared将锁设置为进程共享,看起来可以做到这一点。

另请参阅 IEEE Std 1003.1-2017 中的 2.9.9 同步对象副本和备用映射。

最新更新