C中的非独占共享内存锁



我在Linux上,我想在大约5-10个进程之间共享内存(每个进程都是一个C程序)。我知道如何使用POSIX信号量(sem_open、sem_wait、sem_post等)或其他信号量(semctl、semget、semop等)来实现这一点。问题是我只知道如何进行独占信号量锁。我想要非专属锁。

在我的应用程序中,只有一个进程写入共享内存,而所有其他进程只读取共享内存。我希望能够对信号量执行非独占读取锁定(就像shell命令flock一样)。我可以用POSIX信号量或semctl()来实现这一点吗?或者有其他方法可以做到这一点吗?

适用于您的工具是读写锁pthread_rwlock_t。Linux在不同进程之间的共享内存中很好地实现了它们。查看pthread_rwlock_initpthread_rwlockattr_initpthread_rwlockattr_setpshared,了解如何在共享内存中启用它们。

最新更新