210307共享内存的读写
生活随笔
收集整理的這篇文章主要介紹了
210307共享内存的读写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一、學習的知識點
- systemV
- POSIX(可移植操作系統接口)是一種標準
- 共享內存的讀寫
- 二、上課沒有聽懂或者沒有理解的地方
- 三、當天學習的收獲
一、學習的知識點
systemV
POSIX(可移植操作系統接口)是一種標準
共享內存的讀寫
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 消費者信號量+1semV(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共享内存的读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 210305设计共享内存
- 下一篇: 210312阶段三通过sqlite3源码