我在Linux上,我想在大约5-10个进程之间共享内存(每个进程都是一个C程序)。我知道如何使用POSIX信号量(sem_open、sem_wait、sem_post等)或其他信号量(semctl、semget、semop等)做到这一点。问题是我只知道如何做独占信号量锁。我想要非排他锁。
在我的应用程序中,只有一个进程写入共享内存,而所有其他进程只读取它。我希望能够对信号量执行非独占读锁定(就像使用shell命令flock一样)。我能用POSIX信号量或semctl()做到这一点吗?或者有其他方法可以做到这一点?
发布于 2013-12-01 00:19:22
为你准备的工具是读写锁pthread_rwlock_t。Linux在不同进程之间的共享内存中很好地实现了它们。看看pthread_rwlock_init、pthread_rwlockattr_init和pthread_rwlockattr_setpshared,看看如何在共享内存中启用它们。
https://stackoverflow.com/questions/20302450
复制相似问题