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.
  • 相关阅读:
    python小记(4)
    python小记(3)
    python小记(2)
    python小记(1)
    Linux学习
    plist文件的 偏好设置 存储与读取 自定义对象归档
    控制器创建的三种方式
    IOS应用启动过程
    pch文件中自定义log
    textLabel辅助试图及toolBar创建使用
  • 原文地址:https://www.cnblogs.com/wgscd/p/15030433.html
Copyright © 2011-2022 走看看