一:阻塞队列实现的核心要素:
1.生产者与生产者之间互斥
2.消费者与消费者之间互斥
3.消费者与生产者之间同步(避免出现线程饥饿问题)
核心代码演示:
二:环形队列:
核心关系:
2.1:生产者与生产者之间互斥
2.2:消费者与消费者之间互斥
2.3:生产者与消费者之间互斥和同步
三:与阻塞队列的区别:
环形队列是消费者和生产者可以进入一块公共资源的不同地方;而阻塞队列消费者和生产者看到的同一个queue没有区分queue内的不同地方,环形队列实现的逻辑是信号量和追击思想;
共同点:都解决了线程因为优先级的抢占问题,阻塞队列通过条件变量实现,环形队列通过信号量实现。原来环形队列中有任务,那么在环形队列制造任务的过程中,消费者可以处理任务,这样就实现了消费者和生产者之间的解耦;
实现代码: