C++建立两个内存缓冲区 通过多线程共享内存进行读写 10
一个request缓冲区,一个receive缓冲区,最多64个线程,每个线程写入一个固定格式为32位的数据。线程先准备将数据存入req,如果没有就插入,有就删除,并将后面...
一个request缓冲区,一个receive缓冲区,最多64个线程,每个线程写入一个固定格式为32位的数据。线程先准备将数据存入req,如果没有就插入,有就删除,并将后面的数据指针各减1,然后将req的数据复制到rec区,如果已经有了就不插入。
求各位大神解答,就这么点分,全给你们。
是window系统下的。 展开
求各位大神解答,就这么点分,全给你们。
是window系统下的。 展开
2个回答
2015-04-03 · 知道合伙人互联网行家
关注
展开全部
一旦shmget创建成功了,或者attach成功了。调用shmget会给你返回一个地址的,然后通过引用这个指针直接读取数据。和其它的应用一样。
例如
#define PERM S_IRUSR|S_IWUSR
int main(int argc,char **argv)
{
int shmid;
char *p_addr,*c_addr;
if(argc!=2)
{
fprintf(stderr,"Usage:%s\n\a",argv[0]);
exit(1);
}
if((shmid=shmget(IPC_PRIVATE,1024,PERM))==-1)
{
fprintf(stderr,"Create Share Memory Error:%s\n\a",strerror(errno));
exit(1);
}
if(fork())
{
p_addr=shmat(shmid,0,0);
memset(p_addr,'\0',1024);
strncpy(p_addr,argv[1],1024);
exit(0);
}
else
{
c_addr=shmat(shmid,0,0);
printf("Client get %s",c_addr);
exit(0);
}
}
复制代码
例如
#define PERM S_IRUSR|S_IWUSR
int main(int argc,char **argv)
{
int shmid;
char *p_addr,*c_addr;
if(argc!=2)
{
fprintf(stderr,"Usage:%s\n\a",argv[0]);
exit(1);
}
if((shmid=shmget(IPC_PRIVATE,1024,PERM))==-1)
{
fprintf(stderr,"Create Share Memory Error:%s\n\a",strerror(errno));
exit(1);
}
if(fork())
{
p_addr=shmat(shmid,0,0);
memset(p_addr,'\0',1024);
strncpy(p_addr,argv[1],1024);
exit(0);
}
else
{
c_addr=shmat(shmid,0,0);
printf("Client get %s",c_addr);
exit(0);
}
}
复制代码
追问
不对的,这是linux下的,而且不是多线程。
推荐于2016-02-05 · 知道合伙人数码行家
关注
展开全部
共享内存:实现进程间通信的一种方式。希望访问该内存块的其他进程必须请求对它的访问,或由创建它的进程授予访问内存块的权限。共享内存被映射到使用它的每个进程的地址空间。当一个进程写共享内存,所有进程都立即知道写入的内容,并且可以访问。相当于函数间全局变量的关系类似。进程可能共享一个逻辑地址,也可以共享某些物理地址。
通常使用共享内存比使用管道或队列更简单更有效。共享内存块可用于保存大数据结构。可用于映射文件到内存,使得应用程序减轻了常规文件访问的I/O操作代价。
WIN32 环境创建和使用共享内存所需API:
CreateFileMapping() 创建一个文件映射对象,对文件无限制。
OpenFileMapping() 获取映射对象的句柄
MapViewOfFile() 获取共享内存的起始地址
通常使用共享内存比使用管道或队列更简单更有效。共享内存块可用于保存大数据结构。可用于映射文件到内存,使得应用程序减轻了常规文件访问的I/O操作代价。
WIN32 环境创建和使用共享内存所需API:
CreateFileMapping() 创建一个文件映射对象,对文件无限制。
OpenFileMapping() 获取映射对象的句柄
MapViewOfFile() 获取共享内存的起始地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询