【发布时间】:2014-02-23 18:16:38
【问题描述】:
我需要将浮点向量的向量存储在 C++ 的共享内存中。我有一个有效的玩具示例,用于将整数存储在共享内存中。这是代码:
int main()
{
int pid;
int start = 0;
int shmid;
key_t key;
key = 123;
int *shm;
if ((shmid = shmget(key, sizeof(int), IPC_CREAT | 0666)) < 0)
{
perror("shmget");
exit(1);
}
shm = (int *) shmat(shmid, NULL, 0);
pid = fork();
if (pid > 0)
{
wait(NULL);
cout << *shm << *(shm+1);
}
else if (pid == 0)
{
*shm = 6;
*(shm+1) = 7;
}
else
{
exit(-1);
}
cout << endl;
return 0;
}
但是,据我了解,使用数据类型 vector> 而不是简单的整数,这要困难得多。我是否需要编写一个自定义分配器(如果需要,是否有任何简单的方法可以做到这一点?我发现的例子都非常复杂......)来完成这项工作,或者这个例子有一个简单的扩展那会让我在共享内存中放置一个向量>?
【问题讨论】:
-
查看 Boost.Interprocess。
-
不幸的是,这实际上是一个明确提到“不要使用 Boost”的家庭作业。我只是想知道是否有一种干净的方法可以做到这一点......
-
您需要反序列化您的矢量内容!
-
你能再解释一下吗,我不听...
标签: c++ parallel-processing shared-memory