信号量编程应用:生产者-消费者模型
编程示例
生产消费者模型
- 有若干个缓冲区,生产者不断往里填充数据,消费者不断从里面读取数据
- 如何使两者不产生冲突?
- 缓冲区只有若干个,且有固定大小,而生产者和消费者则有多个进程
- 生产者往缓冲区填数据前要判断缓冲区是否满了,满了就会等,直到有空间
- 消费者从缓冲区拿数据之前要判断缓冲区是否为空,空了就会等,直到缓冲区内有数据为止
- 在某一个时刻,缓冲区只允许有一个操作者进行读或写操作
编程示例:生产者消费者模型
- 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