boost::circular_buffer 相当于文件吗?

2023-12-26

我正在寻找一个允许在磁盘上获取循环缓冲区的库。
在 Boost 中也有类似的东西,但它是一个基于内存的容器:循环缓冲区 http://www.boost.org/doc/libs/1_57_0/doc/html/circular_buffer.html.


您可以将其称为任何您认为自然的名称。

您正在寻找内存映射文件。

使用正确的分配器,您可以使容器在此内存映射区域中分配。这将使容器“在磁盘上”。

我会看看Boost Circularbuffer是否直接支持这个。

Update Yes.

最好的是,这使您完全有可能使用 IPC 同步和线程同步。使用“私有”内存映射,您可以将缓冲区映射为可读写,而无需在某些进程中将更改写回磁盘。

概念证明:

Live On Coliru http://coliru.stacked-crooked.com/a/7923eea5f6435947 ¹

#include <boost/circular_buffer.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/managed_mapped_file.hpp>

namespace bip = boost::interprocess;

struct message {
    int data[32];
};

int main()
{
    bip::managed_mapped_file mmf(bip::open_or_create, "/tmp/circ_buffer.bin", 4ul << 20);
    typedef bip::allocator<message, bip::managed_mapped_file::segment_manager> allocator;

    boost::circular_buffer<message, allocator> instance(100, mmf.get_segment_manager());
}

1 在 Coliru 上,文件大小受到限制,这是可以理解的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boost::circular_buffer 相当于文件吗? 的相关文章

  • Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

    来自 MSDN Volatile Read 读取字段的值 在需要它的系统上 插入一个 阻止处理器重新排序内存的内存屏障 操作如下 如果在该方法之后出现读或写 代码 处理器无法移动它before这个方法 and Volatile Write
  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • C 中“complex”的默认类型

    根据我读过的文档 C99 和更高版本的支持float complex double complex and long double complex作为复杂类型 但是 此代码在使用时编译时不会发出警告gcc Wall Wextra inclu
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • SQL Server“未找到网络路径”在不同环境中随机且不频繁地发生

    类似 如果不是同一个问题 随机遇到网络路径未找到异常 https stackoverflow com questions 38696448 network path not found exception encountered rando
  • 为什么表达式 a = a + b - ( b = a ) 在 C++ 中给出序列点警告?

    以下是测试代码 int main int a 3 int b 4 a a b b a cout lt lt a lt lt a lt lt lt lt b lt lt b lt lt n return 0 编译此命令会出现以下警告 gt g
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 公开阅读,“私人”保留财产

    创建对公共只读且对 私有 读 写的属性的最佳方法是什么 我可以创建一个只读方法并在 m 文件中的无名扩展名中声明该属性 但最好我想保留点符号 在您的公共界面中 声明该属性为只读 即 Foo h interface Foo private B
  • com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:重复文件

    I use android studio 2 0 version I use the gradle to build the program take this the question 我知道这个问题在Android studio 0 7
  • 批处理文件 - 从目录获取文件名并保存为变量

    我正在尝试读取目录并从该目录获取文件名 然后我想将文件名保存为变量并回显该文件名 这是我正在使用的代码 for F a in dir C Users username Documents Training Pentaho Outputs B
  • Python Dbus:如何导出接口属性

    在所有 python dbus 文档中都有关于如何导出对象 接口 信号的信息 但没有关于如何导出接口属性的信息 有什么想法如何做到这一点吗 在 Python 中实现 D Bus 属性绝对是可能的 D Bus 属性只是特定接口上的方法 即or
  • BeginConnect 和 ConnectAsync 有什么区别?

    有什么区别BeginConnect and ConnectAsync 随后 有什么区别BeginDisconnect and DisconnectAsync The ConnectAsync http msdn microsoft com
  • 如何在 npm start 时将 Nodemon 与 Express JS 一起使用?

    我想用nodemon自动检测 Node js 项目中脚本的更改 并在检测到更改时重新启动 我的项目设置使用快递 js 如何将nodemon与express js一起使用 以便当我输入时npm start nodemon 自行启动 首先使用以
  • beautifulsoup 解析 - 处理上标?

    这是我试图从中提取信息的 HTML 段 td class yfnc tablehead1 width 74 Market Cap intraday font size 1 font td
  • 如何:实体框架和多个模式

    我正在使用实体框架 我使用具有多个模式的单个数据库 mySchema1 EmployeemySchema2 EmployeemySchema3 Employee 当我为此数据库生成 edmx 时 它将表重命名为 Employee1 Empl
  • 如何检测 iPhone 上的声音频率/音调? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试找到一种方法来检测 iPhone 麦克风录制的声音频率 我想检测声音频率是上升还是下降 你可以尝试使用SC监听器 http
  • 在 MiniZinc 中我该如何解决这个错误?

    在 MiniZinc 中 如何编译此代码而不出现错误 未找到具有此签名的函数或谓词 round var float var int D 1 var int F constraint F round D 2 该消息仅意味着 MiniZinc
  • 更改 Drupal 7 中的消息

    drupal 中有几条消息 当出现 php 警告时 会引发错误消息 但模块也可以使用 drupal set message 引发消息 问题是 有没有办法改变这些消息 例如 将每条消息中的每个 a 替换为 b Thanks 虽然设置上没有消息
  • 基于 Java 的正则表达式,允许字母数字字符和 ', and

    我是 Java 中正则表达式的新手 我需要验证字符串是否仅包含字母数字字符 逗号 撇号和句号 句点 其他任何内容都应该等同于错误 有人可以指点一下吗 我现在有这个 我相信字符串中的每个字符都有字母数字 Pattern p Pattern c
  • HTML5 的开放图谱验证

    有没有办法让 facebook 的蹩脚 Open Graph 元标记来验证我的文档类型是否是 HTML5 除了 facebook 的 Open Graph 元标记之外 我的文档验证完美 我真的不想用因为这会带来一系列全新的问题 这是相关验证
  • CMake 在 add_library 的链接阶段末尾添加 -ldl

    我在 github 上编写 维护了一个小型单元测试库https github com acgreek ExtremeCUnit https github com acgreek ExtremeCUnit使用 cmake 构建 您可以在签出后
  • 模拟类型转换对象

    我的 bean 中有一个简单的方法来处理 primefaces 数据表中的单元格编辑事件 方法如下 public void onCellEdit CellEditEvent event Object oldValue event getOl
  • Linq to SQL / 过滤重复项

    我的 sql server 2012 中有一个视图 其中有几个重复项 我想按最新的对它们进行排序并过滤所有其他的 谁能帮助我 我对 SQL Server 2012 的看法 GUID 作为主键 数字 日期时间和名称 guid number d
  • 在 IISExpress 中获取 ASP.Net Core 关闭触发 ApplicationStopping 事件

    我知道之前有一个关于此问题的问题 还有一个 GitHub 问题 https github com aspnet Hosting issues 846 https github com aspnet Hosting issues 846从 M
  • 对于 genericsetup 导入步骤的名称,是否有一个很好的参考列表

    是否有通用设置导入步骤名称的综合参考列表 通用设置导入步骤的名称并不总是与其相应 xml 文件的名称匹配 例如 types xml 有一个名为 typeinfo 的导入步骤 如果没有列表 我会对一种简单的方法来查找导入步骤的名称感到满意 例
  • 学习 Hibernate 的好书或在线资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • boost::circular_buffer 相当于文件吗?

    我正在寻找一个允许在磁盘上获取循环缓冲区的库 在 Boost 中也有类似的东西 但它是一个基于内存的容器 循环缓冲区 http www boost org doc libs 1 57 0 doc html circular buffer h