zoukankan      html  css  js  c++  java
  • c#

    https://docs.microsoft.com/zh-cn/dotnet/standard/collections/thread-safe/blockingcollection-overview

    BlockingCollection 概述

    BlockingCollection<T> 是一个线程安全集合类,可提供以下功能:

    • 实现制造者-使用者模式。

    • 通过多线程并发添加和获取项。

    • 可选最大容量。

    • 集合为空或已满时通过插入和移除操作进行阻塞。

    • 插入和移除“尝试”操作不发生阻塞,或在指定时间段内发生阻塞。

    • 封装实现 IProducerConsumerCollection<T> 的任何集合类型

    • 使用取消标记执行取消操作。

    • 支持使用 foreach(在 Visual Basic 中,使用 For Each)的两种枚举:

      1. 只读枚举。

      2. 在枚举项时将项移除的枚举。

      public class BlockingTest
        {
    
    
            BlockingCollection<int> bc = new BlockingCollection<int>();
            public BlockingTest()
            {
                Task.Factory.StartNew(ProduceTask);
               // Task.Factory.StartNew(ConsumeTask);
            }
    
            private void ProduceTask()
            {
                foreach (var item in Enumerable.Range(1, 100))
                {
          
                    bc.Add(item);  
                    Console.WriteLine(string.Format("+++++++++++++: {0}", item) + "   total:" + bc.Count);
                    Thread.Sleep(100);
                }
                bc.CompleteAdding();
            }
    
            private void ConsumeTask()
            {
                foreach (var item in bc.GetConsumingEnumerable())
                {
                    Console.WriteLine(string.Format("---------------: {0}", item)+"   total:"+ bc.Count);
                }
            }
        }
    

      

    fffffffffffffffff
    test red font.
  • 相关阅读:
    wc.exe个人项目
    自我介绍+软工5问
    软件工程团队作业-测试与发布
    结对项目
    个人项目作业
    自我介绍+软工5问
    代码开发、测试及发布
    需求改进&系统设计
    综合系统开发——需求分析
    读书笔记----软件设计原则、设计模式
  • 原文地址:https://www.cnblogs.com/wgscd/p/15030433.html
Copyright © 2011-2022 走看看