本文主要讲解“数据库内存共享的实现原理是什么”,文中讲解内容简单明了,易学易懂。请跟随边肖的思路,一起学习学习“数据库内存共享的实现原理是什么”。
共享内存是进程间通信的一种方式。PostgreSQL使用共享内存来缓存数据和各种数据结构。
下面是演示代码,逻辑很简单,参考代码自己注释。
/*
申请共享内存,父进程写一串字符,子进程读出。
*/
# includestdio.h
#包括ys/ipc.h
#包括ys/shm.h
#包括系统/类型. h
# includeunistd.h
# includestdlib.h
//1k共享内存。
#defineSHM_SIZE1024
#defineSHM_ID10086
intmain()
{
//共享内存id,子进程id。
intshmid,pid
//共享内存指针。
char * ptr=NULL
//申请共享内存。
shmid=shmget((key_t)SHM_ID,SHM_SIZE,IPC _ CREAT | 0600);
//将共享内存映射到进程地址空间。
ptr=(char*)shmat(shmid,0,0);
printf(' attachpointraddris % p \ n ',ptr);
ptr=' Thisissharedmemory!';
printf(' StStringof ParentProcess 3360% s \ n ',ptr);
if((pid=fork())==-1)
{
perror('forkprocesserror!');
退出(0);
}
elseif(!pid)
{
printf(' childprocesspidis :% d,Stringis % s \ n ',pid,ptr);
退出(0);
}else{
睡眠(1);
//Unmap。
shm dt(ptr);
//删除共享内存。
shmctl(shmid,IPC_RMID,0);
}
返回0;
}运行输出。
[pg12 @ localhostipc]$ gcc-STD=c11-of fork . c
infileincluded from fork . 36860 . 88888888861
/usr/include/sys/IPC . h :24: warn : # warn ' files using thisheadrmustogetappelledwith _ SVID _ SOURCE or _ XOPEN _ SOURCE '[-Wcpp]
#警告“文件使用thishheadermstatepiledwith _ SVID _ SOURCE or _ XOPEN _ SOURCE”
^
[pg12@localhostipc]$。/fork
attachpointraddris0x 7 f 61 FFB 6b 000
parentprocessings 3360的内存!
ChildProcessPIDis:0,StringisThisissharedmemory!
[pg12@localhostipc]$感谢阅读。以上就是“数据库内存共享的原理是什么”的内容。看完这篇文章,相信你对数据库内存共享的原理是什么的问题有了更深的理解。具体用法需要实践验证。在这里,边肖将为大家推送更多相关知识点的文章。欢迎关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/67435.html