当前位置: 首页 > news >正文

免费网站外贸网站排行

免费网站,外贸网站排行,想让一个网站上线需要怎么做,西安旅游攻略ppt共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理#xff0c;那么就避免不了先描… 共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理那么就避免不了先描述后组织的策略。 二.创建共享内存 1.shmget 申请一块共享内存-shmget 第二个参数创建共享内存的大小单位字节。 第三个参数多个选项 返回值如果成功返回共享内存标识符如果失败返回-1。 操作系统怎么保证不同进程看到同一个共享内存呢怎么知道这块内存是否存在呢 这就需要对第一个参数进行讨论了。 2.写一个共享内存代码 comm.hpp #ifndef __COMM_HPP__ #define __COMM_HPP__ #include iostream #include sys/types.h #include sys/ipc.h #include sys/shm.husing namespace std;const int size4096; const string path/home/chz;//任意写 const int proj_id0x6666;//任意写key_t Getkey()//获取一个key {key_t kftok(path.c_str(),proj_id);if(k0){perror(Create key wrong\n);exit(1);}coutCreate key sucess,key:kendl;return k; }int GetshareMem()//获取一个chmid {key_t kGetkey();int shmidshmget(k,size,IPC_CREAT|IPC_EXCL|0666);//创建方式和权限if(shmid0){perror(Create shmget wrong\n);exit(2);}coutCreate shmget sucess,shmid;shmidendl;return shmid; }#endif前面说过共享内存如果不主动释放会一直存在所以在调用该函数后我们可以使用ipcs -m查看内核的进程资源。 perms是权限nattch是与之相连的文件byte是共享内存大小建议一般按4096的整数倍创建因为系统一次分配的最小内存是4KB。 使用ipcrm -mshmid可以手动删除。 三.进行通信 1.各种接口 将共享内存挂入 第一个参数毫无疑问是共享内存标识符。 第二个参数一般设置为NULL。因为共享内存是在物理内存上要将其挂到虚拟内存的共享区但具体挂到共享区哪个位置一般由操作系统决定。该函数的返回值就是具体的起始地址。 第三个参数一般设为0。它是改变挂接时的权限虽然我们设置的共享内存权限是666但可以通过这个参数让它只读。 取消挂入 控制共享内存 第二个参数要进行什么操作。有许多参数可以自行查看这里使用 IPC_RMID删除该共享内存 第三个参数共享内存的属性。 2.各接口使用代码 processa.cc #includecomm.hpp #include unistd.hint main() {int shmidGetshareMem();sleep(3);char*shmaddr(char*)shmat(shmid,NULL,0);//将共享内存挂入cout挂入内存endl;sleep(3);shdit(shmaddr);//取消挂入cout取消挂入endl;sleep(3);shmctl(shmid,IPC_RMID,nullptr);//销毁共享内存cout销毁共享内存endl;return 0; }3.一次简单的通信 稍微修改一下comm.hpp,主要在shmget当一个进程创建时让另一个进程能获取 #ifndef __COMM_HPP__ #define __COMM_HPP__ #include iostream #include sys/types.h #include sys/ipc.h #include sys/shm.husing namespace std;const int size4096; const string path/home/chz;//任意写 const int proj_id0x6666;//任意写key_t Getkey()//获取一个key {key_t kftok(path.c_str(),proj_id);if(k0){perror(Create key wrong\n);exit(1);}coutCreate key sucess,key:kendl;return k; }int GetShareMemHelper(int flag)//获取一个chmid {key_t kGetkey();int shmidshmget(k,size,flag);//创建方式和权限if(shmid0){perror(Create shmget wrong\n);exit(2);}coutCreate shmget sucess,shmid;shmidendl;return shmid; }int CreateShm() {return GetShareMemHelper(IPC_CREAT|IPC_EXCL|0666); }int GetShm() {return GetShareMemHelper(IPC_CREAT); }#endifprocessa.cc #includecomm.hpp #include unistd.hint main() {int shmidCreateShm();//创建共享内存//挂入内存//获取起始地址并把它当作字符串使用char*shmaddr(char*)shmat(shmid,nullptr,0);while(true){//直接读取coutI am read:;coutshmaddrendl;sleep(1);}shmdt(shmaddr);//取消挂起shmctl(shmid,IPC_RMID,nullptr);return 0; }processb.cc #includecomm.hppint main() {int shmidGetShm();//获取共享内存//挂入内存//获取起始地址并把它当作字符串使用char*shmaddr(char*)shmat(shmid,nullptr,0);while(true){coutplease Enter:;fgets(shmaddr,4096,stdin);//直接从键盘读入}return 0; }makefile .PHONY:all all:processa processbprocessa:processa.ccg -o $ $^ -stdc11 processb:processb.ccg -o $ $^ -stdc11.PHONY:clean clean:rm -f processa processb四.共享内存的特点 1.共享内存没有同步互斥之类的保护机制。即使没有写入也依然会读 2.共享内存是所有的进程通信中最快的。拷贝少 3.共享内存里的所有数据由用户自己维护。操作系统不会自动将数据清零
http://www.zqtcl.cn/news/593026/

相关文章:

  • 关于配色的网站企业宣传册文案范文
  • 免费推广网站教程湖南中核建设工程公司官方网站
  • 莱阳网站建设公司彩票类网站是如何做代理的
  • 食品公司网站建设广州做网站制作公司
  • 网站上传服务器教程搜索网站存在的关键字
  • 天河建设网站多少钱网络公司网站样本
  • 做的精美的门户网站推荐附近编程培训机构
  • 台州黄岩做网站太原网站建设王道下拉惠
  • 深圳设计网站公司互联网服务平台投诉中心
  • 做seo网站优化哪家强济南网站建设公司排名
  • tp5网站文档归档怎么做手机虚拟机哪个好用
  • 网站建设公司的业务范围万网做网站多少钱
  • 做网站要用写接口6wordpress 汽车租赁
  • 网站开发方向paypal账号注册
  • 如何选择做pc端网站重庆平台网站建设企业
  • 一个人做网站好累电子商城采购流程
  • 网站制作维护价格信息网站建设方案
  • 如何选择建网站公司能看人与动物做的网站
  • 温州网站建设方案外包不能访问子目录的网站
  • 建设拼多多一样网站需要多少钱wordpress企业站主题免费
  • 无锡网站制作哪家公司好做微信文章的网站
  • 网站 制作信产部网站备案
  • 做流程图表的网站网络营销推广网站收录
  • iis5.1怎么新建网站电子商务网站建设与管理实训内容答案
  • 做网站背景步骤知名的vi设计公司
  • 中国室内设计师联盟网站我注册过的网站
  • 如何给自己的公司做网站网站设计电商首页
  • 成都网站开发培训综合网站开发实训总结
  • 个人备案网站名称文学网站开发
  • 花钱做推广广告哪个网站好泗洪网页设计