首页 > 生产者消费者问题,为什么要互斥的使用缓冲池,而且缓冲池存在的意义是什么?

生产者消费者问题,为什么要互斥的使用缓冲池,而且缓冲池存在的意义是什么?

为什么生产者进程和消费者进程不同时使用缓冲池呢,临界资源只是缓冲区而已,互斥的使用缓冲区不就得了,我感觉缓冲池根本没有存在的意义。
而且如果按照操作系统书上写的那样:
wait(empty);wait(mutex);signal(mutex);signal(full);
wait(full);wait(mutex);signal(mutex);siganl(empty);
总是生产者和消费者之一先占用缓冲池,直到没有可用的缓冲区为止,才把使用缓冲池的权限交给另一个进程,这其实并不是同步操作的呀。并且不能写成:        
wait(mutex);wait(empty);signal(full);signal(mutex);
wait(mutex);wait(full);siganl(empty);signal(mutex);
因为当生产者或消费者进程在发现没有可用缓冲区的时候仍然占用着缓冲池权限,导致自身阻塞后,并不能让另一个进程把自身进程唤醒,从而造成进程死锁。
假如压根就没有对缓冲池权限的要求,上述情况也就不会发生了吧。例如写成这样:
wait(empty);signal(full);
wait(full);siganl(empty);

小弟初学操作系统经典进程的同步问题,可能想法有些偏激,请大神们不吝赐教,指点迷津。


缓存池是为了解决同步设的啊,没有缓冲池时总是生产者生产商品,生产完了消费者才能消费,A执行完才能执行B。有了缓存池生产者和消费者可以并发执行,AB并发操作。

【热门文章】
【热门文章】