C++ 在共享内存中存储许多变量
我正在研究多线程和共享内存,只是想知道设置共享内存的最佳方法是什么。到目前为止,我已经完成了这项工作,所有的键都不同:C++ 在共享内存中存储许多变量,c++,fork,shared-memory,C++,Fork,Shared Memory,我正在研究多线程和共享内存,只是想知道设置共享内存的最佳方法是什么。到目前为止,我已经完成了这项工作,所有的键都不同: if ((shmid1 = shmget(key1, 1024, IPC_CREAT)) == -1) error("ERROR on shmget1"); if ((shmid2 = shmget(key2, 1024, IPC_CREAT)) == -1) error("ERROR on shmget2"); if ((shmid3 = shmget(k
if ((shmid1 = shmget(key1, 1024, IPC_CREAT)) == -1)
error("ERROR on shmget1");
if ((shmid2 = shmget(key2, 1024, IPC_CREAT)) == -1)
error("ERROR on shmget2");
if ((shmid3 = shmget(key3, 1024, IPC_CREAT)) == -1)
error("ERROR on shmget3");
- 使用shmid1,我存储一个整数
- 使用shmid2,我存储一个整数数组
- 使用shmid3,我存储一个char*数组。(字符串)
有更好的方法吗?共享内存将附加到内核中的特定内存指针。 因此,您创建共享内存id的方式是正确的 基本共享内存操作包括: shmget-创建共享内存 shmat-在内核中创建内存区域并分配给变量 shmctl-共享内存控制操作 shmdt-从内核分离内存 您已经使用shmget创建了共享内存id 现在,您必须创建内存并将其附加到变量。不管价值是什么
void *shmat(int shmid, const void *shmaddr, int shmflg);
可以将任何变量指定给指针
例如,void*var=shmat(shmid,NULL,shmflg)代码>
现在假设要将数组存储在共享内存变量中。那么
int a[] = { 1, 2, 3};
var = a;
现在,共享内存将包含数组变量。您可以使用相同的共享内存键读取它
谢谢。共享内存将附加到内核中的特定内存指针。
因此,您创建共享内存id的方式是正确的
基本共享内存操作包括:
shmget-创建共享内存
shmat-在内核中创建内存区域并分配给变量
shmctl-共享内存控制操作
shmdt-从内核分离内存
您已经使用shmget创建了共享内存id
现在,您必须创建内存并将其附加到变量。不管价值是什么
void *shmat(int shmid, const void *shmaddr, int shmflg);
可以将任何变量指定给指针
例如,void*var=shmat(shmid,NULL,shmflg)代码>
现在假设要将数组存储在共享内存变量中。那么
int a[] = { 1, 2, 3};
var = a;
现在,共享内存将包含数组变量。您可以使用相同的共享内存键读取它
谢谢