Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该如何备份实时数据?有更好的解决办法吗? 问题:_C++_Backup - Fatal编程技术网

C++ 我应该如何备份实时数据?有更好的解决办法吗? 问题:

C++ 我应该如何备份实时数据?有更好的解决办法吗? 问题:,c++,backup,C++,Backup,我应该如何备份程序中的实时数据?我现在使用的是由C++进程中的“进程间”库提供的内存映射文件。我想知道有没有更好的替代方案 更多细节 我的程序定期从硬件设备接收实时数据,并将数据存储到固定大小的缓冲区中。通常周期很短,比如说3秒。因为缓冲区很重要,我想备份它,以防我的程序崩溃,它可以恢复到崩溃前的原始状态。 我这样做:估计缓冲区的最大大小,并创建一个相同大小的内存映射文件。绑定内存缓冲区和映射文件,这样当内存发生更改时,更改将立即写入本地文件 当程序从崩溃中恢复时,它只读取映射文件并反序列化数据

我应该如何备份程序中的实时数据?我现在使用的是由C++进程中的“进程间”库提供的内存映射文件。我想知道有没有更好的替代方案

更多细节 我的程序定期从硬件设备接收实时数据,并将数据存储到固定大小的缓冲区中。通常周期很短,比如说3秒。因为缓冲区很重要,我想备份它,以防我的程序崩溃,它可以恢复到崩溃前的原始状态。

我这样做:估计缓冲区的最大大小,并创建一个相同大小的内存映射文件。绑定内存缓冲区和映射文件,这样当内存发生更改时,更改将立即写入本地文件

当程序从崩溃中恢复时,它只读取映射文件并反序列化数据

基于某些先决条件,此解决方案可以正常工作: 1). 数据量是预先知道的:3个数据项或5个数据项。 2). 每个数据项的大小都是预先固定的(在C/C++语言中,这意味着一个固定大小的结构/类)

然而,我预计在我的项目中会发生一些可能会打破这些先决条件的事情: 1). 在系统运行期间,数据项数量可能会发生变化。客户可能会开始使用更多的硬件设备,以便接收更多的数据。这意味着我需要重新创建映射文件,复制旧数据,并开始存储新数据。这可能会带来性能问题。 2). 某些特殊数据的大小无法预先确定,例如,用户输入的一些描述信息

因此:如何备份程序中的数据? 我想知道是否有比内存映射文件更好的解决方案?