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

网站备案号显示红色如果网站没有做icp备案吗

网站备案号显示红色,如果网站没有做icp备案吗,机构培训班,自学制作网站难不难在Linux中#xff0c;共享内存是一种允许不同进程之间直接交换数据的高效机制。它是IPC#xff08;Inter-Process Communication#xff0c;进程间通信#xff09;的一种方式#xff0c;允许多个进程通过映射同一块物理内存区域来实现数据共享#xff0c;而无需使用内核来…在Linux中共享内存是一种允许不同进程之间直接交换数据的高效机制。它是IPCInter-Process Communication进程间通信的一种方式允许多个进程通过映射同一块物理内存区域来实现数据共享而无需使用内核来中转数据从而大大提高了效率。 本文将介绍Linux共享内存的基本概念、使用方法以及在实际开发中的应用。 1. 什么是共享内存 共享内存允许不同进程访问同一块物理内存。多个进程可以将这块共享内存映射到各自的地址空间进而可以高效地交换数据。这种方式比通过管道、消息队列或套接字传递数据要高效因为数据直接存在共享内存中避免了内核的中间转发。 2. 共享内存的特点 高效性共享内存不经过内核转发因此进程间通信速度极快特别适合大规模数据交换。易于管理共享内存通过标准的内存管理方法进行访问和控制使用起来比较直观。同步问题由于多个进程可以同时访问同一块内存可能会出现竞争条件。因此必须通过某种同步机制如信号量来保证数据的一致性。 3. Linux中共享内存的实现 在Linux中共享内存通常通过shmget、shmat、shmdt等系统调用来进行管理。使用这些调用可以创建、连接、分离和控制共享内存区。 创建共享内存段 首先进程需要调用shmget来创建共享内存段。该函数的定义如下 int shmget(key_t key, size_t size, int shmflg);key: 一个标识共享内存段的键值通常通过ftok函数生成。size: 共享内存段的大小单位为字节。shmflg: 控制共享内存段创建的标志。常用的标志有 IPC_CREAT: 如果共享内存段不存在则创建一个新的共享内存段。IPC_EXCL: 如果共享内存段已经存在返回错误。 映射共享内存到进程地址空间 创建共享内存后进程需要使用shmat来将共享内存映射到自己的地址空间 void *shmat(int shmid, const void *shmaddr, int shmflg);shmid: 通过shmget返回的共享内存段的标识符。shmaddr: 可选指定共享内存的映射地址通常为NULL由系统自动分配。shmflg: 映射标志常用值有SHM_RDONLY只读和0读写。 返回值是共享内存段的首地址进程可以通过该地址进行数据读写。 分离共享内存 当进程不再需要访问共享内存时可以调用shmdt将其从进程的地址空间中分离 int shmdt(const void *shmaddr);shmaddr: 共享内存段的首地址。 删除共享内存段 最后如果共享内存段不再使用可以调用shmctl删除它 int shmctl(int shmid, int cmd, struct shmid_ds *buf);shmid: 共享内存段的标识符。cmd: 操作类型IPC_RMID表示删除共享内存段。buf: 一个指向shmid_ds结构体的指针通常传入NULL即可。 4. 共享内存的同步问题 共享内存本身并不提供同步机制因此在多个进程同时访问共享内存时必须显式地使用一些同步工具来避免数据竞争。 最常见的同步工具有 信号量Semaphore信号量用于控制多个进程对共享资源的访问。可以通过semget、semop等系统调用来使用。互斥锁Mutex类似于信号量但专门用于保证在任意时刻只有一个进程可以访问共享内存。 5. 共享内存的应用场景 高速缓存在多进程应用中多个进程可能需要访问大量的共享数据。通过共享内存可以避免数据的复制从而提高系统性能。数据交换在多个进程之间频繁交换大量数据时共享内存能够提供比管道、消息队列更高的效率。分布式计算多个计算进程可以通过共享内存交换计算结果在高性能计算中尤为重要。 6. 示例代码创建和使用共享内存 下面是一个简单的共享内存示例演示了如何创建共享内存、写入数据、然后读取数据。 ShareMemory.hpp #pragma once #include iostream #include string #include sys/ipc.h #include sys/shm.h #include unistd.hconst std::string gpath /home/an/code; const int gprojId 0x6666; // const int gshmsize 4096; mode_t gmode 0600;std::string ToHex(key_t key) {char buff[gshmsize];snprintf(buff, sizeof(buff), 0x%x, key);return buff; }class ShareMemory { private:void CreatMemoryHelper(int shmflg){// 1.创建key// ftok()_key ::ftok(gpath.c_str(), gprojId);if (_key 0){std::cerr ftok error std::endl;return;}// 2.int _shmid ::shmget(_key, gshmsize, shmflg);if (_shmid 0){std::cerr shm get error. std::endl;return;}}public:ShareMemory(): _shmid(-1),_key(0),_addr(nullptr){}~ShareMemory(){}void CreatMemory(){CreatMemoryHelper(IPC_CREAT | IPC_EXCL | gmode);}void GetShm(){CreatMemoryHelper(IPC_CREAT);}void AttachShm(){_addr shmat(_shmid, nullptr, 0); // 为什么会失败if ((long long)_addr -1){std::cout attach error std::endl;return;}return;}void DetachShm(){if (_addr ! nullptr)::shmdt(_addr);std::cout detach done: std::endl;}void DeleteShm(){shmctl(_shmid, IPC_RMID, nullptr);}void *GetAddr(){return _addr;}void ShmMeta(){}private:int _shmid;key_t _key;void *_addr;};//临时 ShareMemory shm; Server.cc #include iostream #include unistd.h #include ShareMemory.hppint main() {shm.CreatMemory();shm.AttachShm();std::cout server attach done std::endl;sleep(10);shm.DetachShm();std::cout server detach done std::endl;sleep(10);shm.DeleteShm();std::cout server delete done std::endl;sleep(10);return 0; } Client.cc #include iostream #include ShareMemory.hppint main() {shm.GetShm();shm.AttachShm();//在这里进行IPCshm.DetachShm();shm.DeleteShm();return 0; } 7. 总结 Linux共享内存为进程间数据交换提供了一种高效、低延迟的方式。它通过直接映射内存区域来避免了数据的复制和内核的干预是需要高性能通信的应用程序中不可或缺的技术。然而共享内存也带来了同步和访问控制的挑战开发者需要谨慎设计以保证数据一致性和安全性。
http://www.dnsts.com.cn/news/154525.html

相关文章:

  • 城乡厅建设部网站首页数据分析网站html模板下载
  • 湛江网站建设外包找网站建设公司哪家最好
  • 网站建设广告平台推广网络建设公司前景
  • 网站建设思维导图模版电商哪个平台好做
  • 平板做网站服务器谁能给做网站
  • 做网站用什么技术好低价网站建设费用预算
  • 个人博客网站源码外贸网站建设公司如何
  • 房产网站代理详情页用什么软件制作
  • 网站运营做内容vue.js 可以做网站吗
  • 有个新网站能提供做任务的阅币漫画网站
  • 网站建设与管理专业就业同企网站建设做网站
  • 形容网站页面做的好的词语设计图库
  • asp网站链接access英语网站的建设需要
  • 精准扶贫电商网站建设计划书电子商务网站开发模块流程图
  • 延吉最好的网站建设公司个人网站用什么服务器
  • 海淀网站建设wordpress安装无法连接数据库连接
  • 个人网站空间他达拉非能延时多久
  • 怎样建设一个网站赚钱开发app怎么盈利
  • 济南做网站企业广州住房与建设 网站
  • 天津开发区建网站公司滦南县建设局网站
  • 图文店做网站有用处吗固定ip 建网站
  • 百度搜不到的网站普象工业设计网官网
  • 电子商务网站建设怎么做网址导航华图
  • 合肥蜀山网站开发荣县做网站的
  • 做纺织机械的网站域名大良营销网站建设资讯
  • 济南做网站公司python网站开发教程
  • 网站建设维护的知识页面设计
  • 做实体识别的网站网站域名费会计分录怎么做
  • 六安做网站免费申请域名建立网站
  • 网站开发业务怎么做自适应门户网站模板