210307共享内存的读写 蔚落 2022-11-06 00:50 202阅读 0赞 ### 目录 ### * 一、学习的知识点 * * systemV * POSIX(可移植操作系统接口)是一种标准 * 共享内存的读写 * 二、上课没有听懂或者没有理解的地方 * 三、当天学习的收获 # 一、学习的知识点 # ## systemV ## 1. msgget 消息队列 2. semget 信号量 P-1 V+1 操作 基于内核 用于进程间同步 3. shmget共享内存 ## POSIX(可移植操作系统接口)是一种标准 ## 1. mq\_open 消息队列 2. sem\_init sem\_post sem\_wait 信号量 基于内存 用于线程间同步 3. pthread\_mutex\_init 互斥锁 4. shm\_open 共享内存 ## 共享内存的读写 ## void shmFIFO::shmfifo_write(char* buf) { //写之前 先占用一个生产者的格子 semP(fifo->sem_product); cout << "sem value:" << semGetval(fifo->sem_product); semP(fifo->sem_mutex); //信号量做成互斥锁 保证一个时刻只有一个进程操作内存 memcpy(fifo->payload + fifo->shm_head->wr_index * fifo->shm_head->blkssize, buf, fifo->shm_head->blkssize); fifo->shm_head->wr_index=(fifo->shm_head->wr_index+1)%fifo->shm_head->blocks; semV(fifo->sem_mutex); //写完 通知消费者 可取数据+1 消费者信号量+1 semV(fifo->sem_consume); } /* 因为 格子有多个 生产者可能同时生产多个 消费者也可能同时消费多个 需要一个信号量作为 互斥锁 */ void shmFIFO::shmfifo_read(char* buf) { semP(fifo->sem_consume); semP(fifo->sem_mutex); //上锁 信号量作为互斥锁 memcpy(buf, fifo->payload + fifo->shm_head->rd_index * fifo->shm_head->blkssize, fifo->shm_head->blkssize); fifo->shm_head->rd_index = (fifo->shm_head->rd_index + 1) % fifo->shm_head->blocks; semV(fifo->sem_mutex); semV(fifo->sem_product); } # 二、上课没有听懂或者没有理解的地方 # 无 # 三、当天学习的收获 # 共享内存的读写
相关 210307共享内存的读写 目录 一、学习的知识点 systemV POSIX(可移植操作系统接口)是一种标准 共享内存的读写 二、上课没有听懂或 蔚落/ 2022年11月06日 00:50/ 0 赞/ 203 阅读
相关 共享内存 1.共享内存 a.操作步骤 (1)创建共享内存 (2)映射共享内存 (3)分离共享内存 (4)控制、删除共享内存 b.相关函数 1.shmget 作用:在 男娘i/ 2022年07月15日 13:23/ 0 赞/ 213 阅读
相关 共享内存 共享内存 是被多个进程共享的一部分物理内存,共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以理科看到其 小灰灰/ 2022年07月15日 01:38/ 0 赞/ 280 阅读
相关 共享内存 共享内存 是被多个进程共享的一部分物理内存,共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以理科看到其 淡淡的烟草味﹌/ 2022年07月15日 01:38/ 0 赞/ 258 阅读
相关 Linux--共享内存 include "apue.h" main(){ int id; //创建共享内存 id=shmget(IPC_PRIV 冷不防/ 2022年07月14日 07:51/ 0 赞/ 247 阅读
相关 共享内存 之前我们已经了解了管道和消息队列:[http://blog.csdn.net/qq\_34021920/article/details/79596262][http_blog. 蔚落/ 2022年06月14日 03:52/ 0 赞/ 273 阅读
相关 linux 共享内存 共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间)从而使得这些进程可以相互通信。在GNU/Linux中所有的进程都有 唯一的虚 电玩女神/ 2022年03月20日 08:56/ 0 赞/ 331 阅读
相关 Linux的共享内存 一、shm方式和mmap方式区分 1. 二者本质上是类似的,mmap可以看到文件的实体,而 shmget 对应的文件在交换分区上的 shm 文件系统内,无法直接 cat 快来打我*/ 2021年09月21日 17:00/ 0 赞/ 513 阅读
相关 共享内存 共享内存头文件为shm.h 共享内存可以视为进程间通信速度最快的方式 共享内存实现函数非常简单, shmctl shmget shmat shmdt 这四个函数是共... 我就是我/ 2021年05月17日 14:09/ 0 赞/ 526 阅读
还没有评论,来说两句吧...