gpt4 book ai didi

linux - 共享内存 : location and locking strategies

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:39:58 27 4
gpt4 key购买 nike

我有一个创建共享内存区域的写入器,我想确保读取器在写入器准备好之前无法 shm_open() 该区域。我的 hacky 方法是 writer 将以只读模式打开 shm_open。正确构建区域后,我 chmod() 文件。这真令人讨厌,我无法通过 fcntl() 文件描述符来更改权限。有什么建议(除了在该地区进行一些糟糕的同步吗?)

为什么 chmod() 很讨厌?部分原因是没有 glibc 代码(即公开的代码)告诉我共享内存区域位于何处(例如/dev/shm)。 glibc 中有一些代码可以查看挂载,我不想复制它,但如果没有人能给我比 chmod() 更好的解决方案,我可能别无选择。

最佳答案

除了使用 shm_open,您当然可以使用 mmap - 这允许您使用您选择的目录中的文件(将其放在 ramdisc 上可能是一种优化)。

但要解决锁定问题,也许您应该在共享区域中使用互斥锁,或者(在推送时)只是 flock() 文件。

但是,如果您想让它表现得像一个队列,也许您应该改用一个更像队列类型的 IPC 对象。

关于linux - 共享内存 : location and locking strategies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7682760/

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