C中的非独占共享内存锁

时间:2013-11-30 16:11:47

标签: c locking semaphore

我在Linux上,我希望在大约5-10个进程之间共享内存(每个进程都是一个C程序)。我知道如何使用POSIX信号量(sem_open,sem_wait,sem_post等)或其他信号量(semctl,semget,semop等)来完成此操作。问题是我只知道如何做独占信号量锁。我想要非独家锁。

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

1 个答案:

答案 0 :(得分:4)

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