Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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++编写的进程,它有很多类A/< class A { std::vector<std::vector<short>> tab; /* other random data */ } A类{ std::向量选项卡; /*其他随机数据*/ } 一旦创建,这些对象就应该被不同应用程序的其他进程(只读)访问,也可以在C++中使用。_C++_Serialization_Boost_Shared Memory_Interprocess - Fatal编程技术网

可以用简单的静态转换来代替序列化,以检索C+中两个进程之间共享的数据吗+;? 让我说,我有一个C++编写的进程,它有很多类A/< class A { std::vector<std::vector<short>> tab; /* other random data */ } A类{ std::向量选项卡; /*其他随机数据*/ } 一旦创建,这些对象就应该被不同应用程序的其他进程(只读)访问,也可以在C++中使用。

可以用简单的静态转换来代替序列化,以检索C+中两个进程之间共享的数据吗+;? 让我说,我有一个C++编写的进程,它有很多类A/< class A { std::vector<std::vector<short>> tab; /* other random data */ } A类{ std::向量选项卡; /*其他随机数据*/ } 一旦创建,这些对象就应该被不同应用程序的其他进程(只读)访问,也可以在C++中使用。,c++,serialization,boost,shared-memory,interprocess,C++,Serialization,Boost,Shared Memory,Interprocess,我希望不惜一切代价避免复制或移动对象,因为这会显著增加内存消耗,并且可能需要更多时间 一个“简单”的可移植解决方案是将共享内存中的对象序列化,然后当请求数据时,该进程将只给出内存中类A的各种实例的位置,第二个进程将在能够读取数据之前对它们进行反序列化。 这意味着每次进程想要读取数据时,我们都会创建一个副本。这是我想要避免的 两个进程都是用C++编写的,并且都知道类A的定义,是否可以避免序列化,从而避免数据的复制/移位?当然,它将不再是便携式的,但它不需要 通过共享内存进行简单的静态转换是否可以允

我希望不惜一切代价避免复制或移动对象,因为这会显著增加内存消耗,并且可能需要更多时间

一个“简单”的可移植解决方案是将共享内存中的对象序列化,然后当请求数据时,该进程将只给出内存中类A的各种实例的位置,第二个进程将在能够读取数据之前对它们进行反序列化。 这意味着每次进程想要读取数据时,我们都会创建一个副本。这是我想要避免的

两个进程都是用C++编写的,并且都知道类A的定义,是否可以避免序列化,从而避免数据的复制/移位?当然,它将不再是便携式的,但它不需要

通过共享内存进行简单的静态转换是否可以允许第二个进程作为自己的进程读取其中的数据,而不进行任何类型的处理,因此不需要花费任何时间和额外的内存


如果没有,是否有一种更简单的序列化形式,只增加一个开销,使第二个进程能够理解和读取数据,而无需进行复制?

1。绝对不是,每个进程都有自己的地址空间。2.复制内存样式序列化只能用于POD数据,在使用向量、字符串时甚至不考虑这一点。那么,当使用不同的进程时,绝对没有办法避免序列化(因此复制)吗?也许您正在寻找?@ IAN.B.Kin,我没有考虑内存映射文件。如果我理解正确,可以基于类a的每个实例创建内存映射文件。那么,当第二个进程想要读取数据时,它是否需要复制数据?如果是这样的话,在我看来,这只是一种不同的方式来整理数据,与序列化没有什么不同。@Norgannon你看过吗?看看如何使用boost。但仅仅是搜索和阅读将是一个良好的开端。