gpt4 book ai didi

c++ - boost::managed_shared_memory 可以正确处理 vector 吗?

转载 作者:行者123 更新时间:2023-11-30 05:18:32 27 4
gpt4 key购买 nike

下面是官方在进程间共享内存中使用vector的例子:

http://www.boost.org/doc/libs/1_55_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_interprocess_container

不过我还是有些担心:

  1. 如果 vector 需要重新分配新内存怎么办(例如,在几次 push_back 之后)?

  2. 如果 vector 不断增加并最终耗尽所有初始化内存怎么办?

  3. 与原始 STL vector 相比,性能损失是多少?

最佳答案

  1. 它通过自定义 ShmemAllocator 实现。这就是分配器的工作方式:您将调用 new 的标准堆分配器替换为从共享内存段分配的 Boost 堆分配器。

  2. 与使用标准分配器耗尽内存的行为相同:将抛出异常(但不是 std::bad_alloc:它是 apparently boost::interprocess: :bad_alloc 代替)。

  3. 您需要对 Boost 分配器的分配速度进行基准测试,并将其与默认的 std::allocator 进行比较。 vector 本身并不重要。

关于c++ - boost::managed_shared_memory 可以正确处理 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41672678/

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