基于链表及环形队列的生产者与消费者简单实现
2017-05-31 10:36
337 查看
1.基于链表的生产者与消费者模拟实现
使用条件变量与互斥锁完成,可保证线程的互斥与同步,条件变量是衡量某种临界资源是否满足生产者生产或消费者消费的条件状况,而互斥锁是保证线程的安全性,条件变量与互斥锁必须搭配使用,而在某些情况下,互斥锁的使用可不与条件变量搭配;
分析生产者与消费者模型,可用“321原则”来描述:
‘3’指三种关系:生产者与消费者间关系(互斥与同步关系)、生产者与生产者间关系(互斥关系)、消费者与消费者间关系(互斥关系);
‘2’指两个角色:生产者(在临界区内放数据)、消费者(从临界区中拿数据);
‘1’指一个交易场所;
代码实现:(#include <pthread.h>)
(1)首先创建链表(链表基本操作)
(2)基于链表的生产者与消费者模型
(3)代码测试:
2.基于环形队列的生产者与消费者模拟实现
分析:使用数组模拟的环形队列和多元信号量同时完成,需为生产者和消费者各设置一个信号量semPro/semCos;
(1)代码实现:(#include <pthread.h> #include <semaphore.h>)
(2)代码测试:
在生产者与消费者模型中,需牢记“321原则”;
使用条件变量与互斥锁完成,可保证线程的互斥与同步,条件变量是衡量某种临界资源是否满足生产者生产或消费者消费的条件状况,而互斥锁是保证线程的安全性,条件变量与互斥锁必须搭配使用,而在某些情况下,互斥锁的使用可不与条件变量搭配;
分析生产者与消费者模型,可用“321原则”来描述:
‘3’指三种关系:生产者与消费者间关系(互斥与同步关系)、生产者与生产者间关系(互斥关系)、消费者与消费者间关系(互斥关系);
‘2’指两个角色:生产者(在临界区内放数据)、消费者(从临界区中拿数据);
‘1’指一个交易场所;
代码实现:(#include <pthread.h>)
(1)首先创建链表(链表基本操作)
(2)基于链表的生产者与消费者模型
(3)代码测试:
2.基于环形队列的生产者与消费者模拟实现
分析:使用数组模拟的环形队列和多元信号量同时完成,需为生产者和消费者各设置一个信号量semPro/semCos;
(1)代码实现:(#include <pthread.h> #include <semaphore.h>)
(2)代码测试:
在生产者与消费者模型中,需牢记“321原则”;
相关文章推荐
- 生产者与消费者模型(基于单链表、环形队列、多线程、多消费多生产)
- 基于阻塞队列实现消费者和生产者
- 基于单链表和基于环形队列的生产者消费者模型
- 用生产者消费者模型实现的线程安全环形队列
- 基于阻塞队列实现消费者和生产者
- 生产者消费者-线程-链表-队列实现
- linux下c++实现简单的生产者消费者队列模式
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 基于环形队列的生产者消费者模型编写。
- Linux基于单链表&环形队列的多线程生产者消费者模型
- 11.python并发入门(part8 基于线程队列实现生产者消费者模型)
- 经典的生产者与消费者模型(基于BlockingQueue队列实现)
- 基于Java阻塞队列实现生产者与消费者模式
- 基于单链表和环形队列的生产者-消费者模型
- 基于环形队列的单生产者单消费者模型
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- 分布式Web应用----基于Socket+动态代理实现简单RPC 生产者消费者模型
- 简单队列的实现(基于链表)
- Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用
- 【Java并发】生产者-消费者模式简单实现(模拟消息队列)