消费者模型
生产者-消费者问题是一个经典的进程同步问题,生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置一个具有N个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区;消费者进程可从一个缓冲区中取走产品去消费。当缓冲区满的时候生产者就不能放,当缓冲区空的时候消费者就不能取。
以下是我在Linux下实现的生产者消费者模型:
读者写者模型
读者与写者问题的特点在于读者不使缓冲区数量改变,并且多个读者可以同时读取缓冲区信息,而写者与写者、写者与读者只能互斥访问缓冲区的相同数据。对于相同的数据项,多个读者之间可以同时访问;对于相同的数据项,多个写者或写者与读者之间不能同时访问。
两个模型之间的区别
从两个模型的原理中可以看出,两个模型最大的区别在于在生产者消费者模型中,生产者与生产者是互斥关系,消费者和消费者是互斥关系,生产者和消费者之间是互斥与同步关系;而在读者写者模型中,读者和读者没有关系,写者和写者是互斥关系,读者和写者是互斥