图文并茂的生产者消费者应用实例demo
2018-01-17 19:34
253 查看
前面的几篇文章<<.NET 中的阻塞队列BlockingCollection的正确打开方式>><<项目开发中应用如何并发处理的一二事>>从代码以及理论角度,充分的利用了微软提供的BlockingCollection的属性IsComplete以及CompleteAdding完成了并发的设计,这次我们单单就从流水线式的生产者消费者来设计并发。具体的文章demo请看<<.Net中的并行编程-4.实现高性能异步队列>><<.Net中的并行编程-7.基于BlockingCollection实现高性能异步队列>>,代码设计逻辑请看下图:
图1是阻塞队列的并发模式简图,图二是异步队列的并发模式简图。
参考上文链接的代码,异步队列的实现逻辑不同于阻塞队列的实现逻辑,但其实差不多,异步队列是多消费者的形式消费,在递归中不断的调用task开启新的线程,而且消费者线程的数量取决于队列的数量,这就不太好了,当然我们可以做下改进,阻塞队列是单消费者的形式消费,我们可以很方便的改为多消费者。总的来说,这个的设计还是很不错的。做下笔记,回头再好好的研究下,以后直接放到项目中用,以及后面的春招!
图1是阻塞队列的并发模式简图,图二是异步队列的并发模式简图。
参考上文链接的代码,异步队列的实现逻辑不同于阻塞队列的实现逻辑,但其实差不多,异步队列是多消费者的形式消费,在递归中不断的调用task开启新的线程,而且消费者线程的数量取决于队列的数量,这就不太好了,当然我们可以做下改进,阻塞队列是单消费者的形式消费,我们可以很方便的改为多消费者。总的来说,这个的设计还是很不错的。做下笔记,回头再好好的研究下,以后直接放到项目中用,以及后面的春招!
相关文章推荐
- 生产者与消费者模型,简单实例(一个生产者,一个消费者)
- [连载] 用C#进行思考(侧注1.1)现实生活中的生产者和消费者实例
- kafka 生产者和消费者实例
- 多线程并发应用(生产者/消费者)
- java生产者消费者问题(线程同步与线程等待的应用)
- 多线程应用--生产者、消费者模式
- C#中使用反射机制得到类型实例应用Demo
- java生产者消费者问题(线程同步与线程等待的应用)
- php rabbitmq操作类及生产者和消费者实例代码
- Linux下进程的同步互斥实例——生产者消费者
- Napajs demo-多个生产者/消费者
- 条件变量实例:生产者-消费者模式的后进先出型(std::stack)缓冲区
- php rabbitmq操作类及生产者和消费者实例代码
- python条件变量之生产者与消费者操作实例分析
- Android 生产者模式和消费者模式 --- 【应用场景】
- Linux下进程的同步互斥实例——生产者消费者
- java中多线程通信实例:生产者消费者模式
- 《Lua程序设计》9.2 管道(pipe)与过滤器(filter) 包含使用协同函数实现“生产者——消费者”问题的实例代码
- 在Windows环境中安装并使用kafka以及生产者消费者Demo
- 多线程——等待唤醒机制经典实例:生产者消费者模式