我在Linux上,我希望在大约5-10个进程之间共享内存(每个进程都是一个C程序)。我知道如何使用POSIX信号量(sem_open,sem_wait,sem_post等)或其他信号量(semctl,semget,semop等)来完成此操作。问题是我只知道如何做独占信号量锁。我想要非独家锁。
在我的应用程序中,只有一个进程写入共享内存,而其他进程只读取它。我希望能够在信号量上进行非独占读锁(就像使用shell命令flock一样)。我可以用POSIX信号量或semctl()来做到这一点吗?还是有另一种方法可以做到这一点吗?
答案 0 :(得分:4)
您的工具是读写锁pthread_rwlock_t
。 Linux在不同进程之间的共享内存中很好地实现了它们请查看pthread_rwlock_init
,pthread_rwlockattr_init
和pthread_rwlockattr_setpshared
,了解如何在共享内存中启用它们。