簡體   English   中英

進程間共享讀寫鎖

[英]sharing read-write lock between interprocess

我有兩個進程 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;
}




我還沒有嘗試過,但是如果您將鎖放在共享 memory 中(例如通過mmapshmget設置)並使用pthread_rwlockattr_setpshared將鎖設置為進程共享,看起來可以做到這一點。

另請參見IEEE Std 1003.1-2017 中的 2.9.9 同步 Object 副本和替代映射

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM