数学与信息技术学院
主要用到生产者函数 RP-ProceducerThread(void* p)来实现缓冲区产品数
量的增加,用 RP-ConsumerThread(void*p)来实现缓冲区产品的减少。并用到了
CreateThread 函数来创建生产者消费者线程,利用线程的句柄以及创建线程是
立刻运行的特点来进行生产消费操作。至于 PV 算法的实现是利用 buffer_empty
和 buffer_full 来进行控制,buffer_empty 的值可以看做资源量,只有空的数
值大于 0 才可以进行生产,buffer_full 的数值与 buffer_empty 的值有对应的
关系,利用 buffer_full 来控制消费的进行。最后,在缓冲区操作临界资源
PC_Buffer 来说利用 EnterCriticalSection( &PC_Buffer ); //等待共享资源
LeaveCriticalSection( &PC_Buffer ) ; //释放共享资源来进行缓冲区操作的
控制。总之当程序读入测试文件中的数据时,便根据读入的字符时 C 还是 P 创造
相应的进程,在分配 EMPTY 或者 FULL 资源,然后等待共享资源 PC_Buffer,得到
后便进行操作。最后读入所有的数据,完成所有进程的操作。
利用生产者进程进行生产,同时消费者进程也能进行消费,但是必须满足
同步的条件才可以允许,否则将提示缓冲区满无法进行生产或者缓冲区空无法进
行消费的错误,故程序应该具有判断的功能。若结束当前的生产者——消费者进
程,将会提示此次进程中生产消费者分别生产了和消费的产品数目,并统计缓冲