我们在开发过程中经常会遇到需要从一个地方不断获取数据然后又需要交给另一个线程对数据进行二次加工的情况,这种场景适合使用生产者-消费者模式。

Demo展示

  //中间的容器
  public static class Container
{
public static Queue<string> StringTemp = new Queue<string>();
}    /// <summary>
/// 生产者
/// </summary>
public class Producer
{
Queue<string> StringContainer = new Queue<string>();
public Producer(Queue<string> container)
{
this.StringContainer = container;
}
public void Produce()
{
StringContainer.Enqueue("i");
}
} /// <summary>
/// 消费者
/// </summary>
public class Consumer
{
Queue<string> StringContainer = new Queue<string>();
public Consumer(Queue<string> container)
{
this.StringContainer = container;
}
public void Consume()
{
var key = StringContainer.Dequeue();
Console.WriteLine("{0},你好,当前线程ID为{1}" ,key, Thread.CurrentThread.ManagedThreadId.ToString());
}
}
  class Program
{
readonly static object _locker = new object();
static void Main(string[] args)
{ //生产者消费者模式
//开启生产
Action<string> produce = Product;
produce.BeginInvoke("", null, null);
//开启消费
Action<string> consume = Consume;
consume.BeginInvoke("", null, null); //开启消费2
Action<string> consume2 = Consume;
consume2.BeginInvoke("", null, null); Console.ReadLine();
}
/// <summary>
/// 生产
/// </summary>
/// <param name="name"></param>
static void Product(string name)
{
while (true)
{
Thread.Sleep(2000);
lock (_locker)
{
if (Container.StringTemp.Count == )
{
new Producer(Container.StringTemp).Produce();
}
else {
Console.WriteLine("生产者没有任务"+Thread.CurrentThread.ManagedThreadId.ToString());
}
}
} }
/// <summary>
/// 消费
/// </summary>
/// <param name="name"></param>
static void Consume(string name)
{
while (true)
{
Thread.Sleep();
lock (_locker)
{
if (Container.StringTemp.Count > )
{
new Consumer(Container.StringTemp).Consume();
}
else {
Console.WriteLine("消费者没有任务" + Thread.CurrentThread.ManagedThreadId.ToString());
}
}
} }
}

运行效果如下图:

aaarticlea/jpeg;base64,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" alt="" />

c# Queue实现生产者(Producer)消费者(Consumer)模式的更多相关文章

  1. linux下C语言实现多线程通信—环形缓冲区,可用于生产者(producer)/消费者(consumer)【转】

    转自:http://blog.chinaunix.net/uid-28458801-id-4262445.html 操作系统:ubuntu10.04 前言:     在嵌入式开发中,只要是带操作系统的 ...

  2. Python生产者producer和consumer消费者案例写法,含有多线程,包含队列queue、JoinableQueue队列的用法

    import timeimport random import queuefrom multiprocessing import Process,Queue 案例一:def consumer(q,na ...

  3. python queue和生产者和消费者模型

    queue队列 当必须安全地在多个线程之间交换信息时,队列在线程编程中特别有用. class queue.Queue(maxsize=0) #先入先出 class queue.LifoQueue(ma ...

  4. 多进程(了解):守护进程,互斥锁,信号量,进程Queue与线程queue(生产者与消费者模型)

    一.守护进程 主进程创建守护进程,守护进程的主要的特征为:①守护进程会在主进程代码执行结束时立即终止:②守护进程内无法继续再开子进程,否则会抛出异常. 实例: from multiprocessing ...

  5. 广播模式下的生产者与消费者fanout模式

    生产者 #coding=utf-8 import pika import sys connection = pika.BlockingConnection(pika.ConnectionParamet ...

  6. java生产者与消费者模式

    前言: 生产者和消费者模式是我们在学习多线程中很经典的一个模式,它主要分为生产者和消费者,分别是两个线程, 目录 一:生产者和消费者模式简介 二:生产者和消费者模式的实现 声明:本例来源于java经典 ...

  7. 多生产者多消费者(第二种方式2.1)基于BlockingQueue

    public class Producer implements Runnable { //静态变量只初始化一次 private static AtomicInteger count = new At ...

  8. 生产者和消费者模型producer and consumer(单线程下实现高并发)

    #1.生产者和消费者模型producer and consumer modelimport timedef producer(): ret = [] for i in range(2): time.s ...

  9. 使用libuv实现生产者和消费者模式

    生产者和消费者模式(Consumer + Producer model) 用于把耗时操作(生产线程),分配给一个或者多个额外线程执行(消费线程),从而提高生产线程的响应速度(并发能力) 定义 type ...

随机推荐

  1. Delphi DBGrid实现多选

    DBGrid1.Options:= DBGrid1.Options+[dgMultiSelect];  //先设置DBGrid1的多选属性为True if DBGrid1.SelectedRows.C ...

  2. codevs——1080 线段树练习

    1080 线段树练习  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 一行N个方格,开始每个格子里都有 ...

  3. mysql 安装与卸载

    mysql用了也好几年了,但每次安装完或者卸载完就忘记了安装步骤以及卸载步骤,因此将关键的步骤记录下来,供以后参考. 1.mysql安装 ①安装类型有typical,complete,custom,一 ...

  4. java监控工具jconsole

    jconsole可以监控本地和远程进程 jvisualvm

  5. HDU 5074 Hatsune Miku 2014 Asia AnShan Regional Contest dp(水

    简单dp #include <stdio.h> #include <cstring> #include <iostream> #include <map> ...

  6. canvas 插件

    http://www.jq22.com/yanshi2217 参考这个站 发现一些比较有用的canvas插件: 线形图插件:jquery.sparkline 2.1.1 excanvas 环形图,饼状 ...

  7. 在Windows上安装Nexus

    在Windows上安装Nexus 学习了:https://www.cnblogs.com/yucongblog/p/6696736.html 下载地址:https://sonatype-downloa ...

  8. 【Unix编程】C/C++获取目录下文件或目录

    在Unix/Linux系统中,要获取一个指定目录下所有的文件或文件夹,一般用dirent.h(POSIX标准定义的目录操作头文件). 一.数据类型 在头文件<dirent.h>中定义了两种 ...

  9. Vijos P1023Victoria的舞会3【贪心+DFS求强联通分量】

    链接:Click Me! P1023Victoria的舞会3 Accepted 标签:Victoria的舞会[显示标签] 描写叙述 Victoria是一位颇有成就的艺术家,他因油画作品<我爱北京 ...

  10. java web项目的部署

    java web项目的部署 我刚开始学着编写java web项目,着实遇到不少麻烦,感觉JAVA真难侍候,好多东西都是手动.手动. 就拿这个web项目在tomcat上的部署来说吧.我在项目的build ...