搜索
您的当前位置:首页进程间通信(十五)——信号量编程应用:生产者-消费者模型

进程间通信(十五)——信号量编程应用:生产者-消费者模型

来源:乌哈旅游

信号量编程应用:生产者-消费者模型

编程示例

生产消费者模型

  • 若干个缓冲区,生产者不断往里填充数据,消费者不断从里面读取数据
  • 如何使两者不产生冲突?
    • 缓冲区只有若干个,且有固定大小,而生产者和消费者则有多个进程
    • 生产者往缓冲区填数据前要判断缓冲区是否满了,满了就会等,直到有空间
    • 消费者从缓冲区拿数据之前要判断缓冲区是否为空,空了就会等,直到缓冲区内有数据为止
    • 在某一个时刻,缓冲区只允许有一个操作者进行读或写操作

编程示例:生产者消费者模型

 

  • 2个生产者,每1S、5S往缓冲区写一次数据
  • 3个消费者,每2S、2S、5S往缓冲区读一次数据
  • 2个写进程分别对写信号量做P操作、对读信号量做V操作
  • 3个读进程分别对读信号量做V操作、对写信号量做P操作

生产者

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sy

因篇幅问题不能全部显示,请点此查看更多更全内容

Top