生产者-消费者问题
生产者-消费者问题,也称有界缓冲问题,属于操作系统进程同步的经典问题,在多线程并发编程中也是经典案例,值得去学习。
有一个生产者线程和一个消费者线程,生产者生产资源到资源缓冲区,消费者从资源缓冲区消费资源。资源缓冲区有界,空则不能取,满则不能产。
但是我们要做到的是同步啊,所以可以用信号量来处理。
分析(含伪代码)这里给出了有限缓冲的通用结构,而不是只局限于某个特定实现。 假设缓冲池中有n个缓冲项,,每个缓冲项能存一个数据项。信号量mutex提供了对缓冲池访问的互斥要求,并初始化为1。信号量empty和full分别用来表示空缓冲项和满缓冲项的数量。信号量empty初始化为n;而信号量full初始化为0。
- N buffers each can hold one item
- Semaphore mutex initialized to the value 1
- Semaphore full initialized to the value 0
- Semaphore empty initialized to the value N
The structure of the producer process :
whil