gpt4 book ai didi

c - 共享内存中的 POSIX 信号量或 RW 锁

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:56 25 4
gpt4 key购买 nike

我有一个服务器 C 应用程序,它使用 write(2) 以同步模式写入日志,但正因为如此,它有时会阻塞 100-400 毫秒(有时更多),因为服务器计算机上的 IO 负载非常高.

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

将 POSIX 信号量或 POSIX RW 锁放入共享内存(并因此放入 mmap 区域)以实现写入器和读取器之间的同步是安全的吗?在这种情况下有什么特别的事情要考虑吗?

最佳答案

您当然可以重新发明轮子,但您可能要考虑使用系统日志 [1]。但是,如果您确定自己 - 必须 - 以自己的方式做事,您可能需要考虑将 mqueues[2] 或命名信号量 [3] 与共享内存结合使用。

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

关于c - 共享内存中的 POSIX 信号量或 RW 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com