zoukankan      html  css  js  c++  java
  • 为线程安全集合提供阻塞和限制功能

     1     class Program
     2     {
     3         //为线程安全集合提供阻塞和限制功能
     4         private static BlockingCollection<Int32> blockingCollection = new BlockingCollection<Int32>(new ConcurrentQueue<Int32>());
     5 
     6         static void Main(string[] args)
     7         {
     8             //由一个线程池线程执行“生产”
     9             ThreadPool.QueueUserWorkItem(ProduceItems);
    10 
    11             //由一个线程池线程执行“消费”
    12             ThreadPool.QueueUserWorkItem(ConsumeItems, blockingCollection);
    13 
    14             Console.ReadLine();
    15         }
    16 
    17         /// <summary>
    18         /// 生产者
    19         /// 一直生产,直到显式通知消费者不再生产
    20         /// </summary>
    21         /// <param name="obj"></param>
    22         private static void ProduceItems(object obj)
    23         {
    24             for (int i = 0; i < 5; i++)
    25             {
    26                 Console.WriteLine("ProduceItems:" + i);
    27                 blockingCollection.Add(i);
    28             }
    29 
    30             //不再生产,通知消费者不会再有更多项了
    31             blockingCollection.CompleteAdding();
    32         }
    33 
    34         /// <summary>
    35         /// 消费者
    36         /// 一直消费(只要有),直到收到生产者通知不再生产
    37         /// </summary>
    38         /// <param name="obj"></param>
    39         private static void ConsumeItems(object obj)
    40         {
    41             //阻塞,直到出现一项数据。出现后立即处理该数据
    42             foreach (var item in blockingCollection.GetConsumingEnumerable())
    43             {
    44                 Console.WriteLine("ConsumeItems:" + item);
    45             }
    46 
    47             //所有项“消费”完毕,没有更多的项再进入该队列,最后执行该行
    48             Console.WriteLine("All done.");
    49         }
    50     }
  • 相关阅读:
    服务部署 RPC vs RESTful
    模拟浏览器之从 Selenium 到splinter
    windows程序设计 vs2012 新建win32项目
    ubuntu python 安装numpy,scipy.pandas.....
    vmvare 将主机的文件复制到虚拟机系统中 安装WMware tools
    ubuntu 修改root密码
    python 定义类 简单使用
    python 定义函数 两个文件调用函数
    python 定义函数 调用函数
    python windows 安装gensim
  • 原文地址:https://www.cnblogs.com/xuejietong/p/8849475.html
Copyright © 2011-2022 走看看