gpt4 book ai didi

c++ - 强制 boost 使用 POSIX 共享内存而不是 System V?

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

默认情况下,Boost 使用 System V 共享内存并创建用于通信的文件。我希望它使用 POSIX 共享内存。

他们是强制 boost 使用 POSIX 共享内存而不是尝试创建文件的方法吗?

我是否必须更改源代码中的某些内容 (Boost.Interprocess)?

我在 OS X(10.6、10.7 和 10.8)上的项目中使用 1.46.1 版本的 boost。但我也可以使用 1.52.0。在迁移之前,我想知道是否可以这样做。

最佳答案

根据文档,Boost Interprocess 将在可用时使用 POSIX。进一步研究它,似乎在 Max OSX 上它没有,因为实现有一些不符合规范的行为(根据标题)。下面是来自 boost/interprocess/detail/workaround.hpp 的代码。

//Check for XSI shared memory objects. They are available in nearly all UNIX platforms
#if !defined(__QNXNTO__)
#define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS
#endif

#if defined(_POSIX_SHARED_MEMORY_OBJECTS) && ((_POSIX_SHARED_MEMORY_OBJECTS - 0) > 0)
#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS
#else
//VMS and MACOS don't define it but they have shm_open/close interface
#if defined(__vms)
#if __CRTL_VER >= 70200000
#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS
#endif
//Mac OS has some non-conformant features like names limited to SHM_NAME_MAX
#elif defined (__APPLE__)
//#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS
//#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW
#endif
#endif

关于c++ - 强制 boost 使用 POSIX 共享内存而不是 System V?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14383679/

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