zoukankan      html  css  js  c++  java
  • C# 多线程是否结束可通过线程池可以判断

    C# ManualResetEvent信号状态判断线程池是否结束 

    这是一段重要的代码,小猪两个小时的研究成果,记下来备查。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace 线程池判断结束综合演示
    {
        class Program
        {
            public static int iCount = 0;  
            public static int MaxCount = 10;//允许线程池中运行最多10个线程
            static ManualResetEvent eventX = new ManualResetEvent(false);  //新建ManualResetEvent对象并且初始化为无信号状态
    
            static void Main(string[] args)
            {
                Console.WriteLine("ManualResetEvent初始为无信号状态 ");
                Console.WriteLine("线程池最大值为 {0} 个线程。", MaxCount);
                for (int iItem = 1; iItem <= MaxCount; iItem++)
                {
                    //插入队列元素
                    Console.WriteLine("加入线程 {0}", iItem);
                    ThreadPool.QueueUserWorkItem(new WaitCallback(fun1), (object)iItem);
                }
                Console.WriteLine("等待线程池完成操作。。。"); //等待事件的完成,即线程调用ManualResetEvent.Set()方法
                eventX.WaitOne(Timeout.Infinite, true); //WaitOne()方法使调用它的线程等待直到eventX.Set()方法被调用
                Console.WriteLine("线程池结束!");
                Console.ReadLine();
            }
    
            public static void fun1(object j)
            {
                Console.WriteLine(" {0} {1} :", Thread.CurrentThread.GetHashCode(), j.ToString());
                Thread.Sleep(1000);
                Interlocked.Increment(ref iCount);
                if (iCount == MaxCount)
                {
                    Console.WriteLine();
                    Console.WriteLine("设置ManualResetEvent为有信号状态,Setting eventX ");
                    eventX.Set();
                }  
    
            }
    
     
    
        }
    }
  • 相关阅读:
    CF1284G
    5-3 Harbor高可用部署 下
    5业务系统迁移kubernetes-----准备工作(平稳迁移做好准备)
    题解-CF1453F Even Harder
    题解-CF961F k-substrings
    Docker 数据卷容器(实现两个或多个容器间数据同步)
    Docker 具名和匿名挂载
    Java-IO中的节点流和处理流
    《机器学习十讲》学习报告二
    rpc基本思路
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5591711.html
Copyright © 2011-2022 走看看