繁体   English   中英

共享内存中的POSIX Semaphore或RW锁

[英]POSIX Semaphore or RW lock inside shared memory

我有一个服务器C应用程序,它使用write(2)以同步模式写入日志,但是由于这个原因,由于服务器计算机上的IO负载非常高,它有时会阻塞100-400毫秒(有时更长)。

我想将日志写入进程地址空间中映射的POSIX共享内存区域。 在这种情况下,仅另一个进程将从该POSIX共享内存中读取并写入磁盘。 这样,如果进程崩溃,日志信息也不会丢失,唯一的问题是断电。

将POSIX信号灯或POSIX RW锁放在共享内存中(因此位于mmap-ed区域中),以便在编写器和读取器之间进行同步是否安全? 在这种情况下有什么特别的事情要考虑吗?

您当然可以重新发明轮子,但是您可能要考虑使用syslog [1]。 但是,如果确定必须按照自己的方式进行操作,则可能需要考虑将mqueues [2]或命名信号量[3]与共享内存结合使用。

[1] http://www.gnu.org/software/libc/manual/html_node/Syslog.html#Syslog
[2]人7 mq_overview
[3]人7 sem_overview

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM