本程序实现有限缓冲区问题,设计了两个进程,一个在地址空间运行,一个生产者进程 producer模拟生产产品,并把每个产品放到一个空缓冲中供消费consumer消费。消费者从缓冲区中取出产品,然后释放到空的缓冲池中。如果没有满缓冲,消费者就会被阻塞,直到生产者生产出新的产品。如果当生产者生产了配件后,没有空缓冲可用时,生产者就被阻塞,直到消费者线程释放出一个空缓冲。
程序使用共享内存的方法实现缓冲区,利用PV操作与信号量的方法实现生产者与消费者的同步。程序利用了三个信号量:mutex用于互斥地访问缓冲区;full用于判断缓冲区是否为满,用于指示消费者线程能否从缓冲区中取出产品;empty则是用于判断缓冲区是否为空,用于指示生产者线程能否进行生产。有限缓冲区问题的实现,其目的是为了了解UNIX的命令及格式,熟悉UNIX的常用基本命令以及相关的编译器。本程序用gcc、gdb编译、调试C程序,编写程序实现有限缓冲区问题。
1