【发布时间】:2014-06-02 09:14:12
【问题描述】:
我有一个服务器 C 应用程序,它使用 write(2) 以同步模式写入日志,但正因为如此,它有时会阻塞 100-400 毫秒(有时更长),因为服务器机器上的 IO 负载非常高.
我想将日志写入进程地址空间中的一个 POSIX 共享内存区域 mmap-ed。在这种情况下,另一个进程只会从该 POSIX 共享内存中读取数据并写入磁盘。这样,如果进程崩溃,日志信息不会丢失,唯一的问题是在断电的情况下。
将 POSIX 信号量或 POSIX RW 锁放在共享内存中(因此放在 mmap-ed 区域内)以实现写入器和读取器之间的同步是否安全?在这种情况下,有什么特别需要考虑的吗?
【问题讨论】:
-
只要确保它被初始化为 PTHREAD_PROCESS_SHARED 就可以了。
标签: c linux posix shared-memory