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();
                }  
    
            }
    
     
    
        }
    }
  • 相关阅读:
    C语言---堆的实现
    python的matplotlib---雷达图
    python的matplotlib饼状图
    python的matplotlib折线图
    python的matplotlib散点图学习
    python的matplotlib散点图
    C语言---队列(链表实现)
    hadoop集群启动与关闭需要输入密码
    hadoop集群启动时需要输入密码
    C语言---堆栈(链表实现)
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5591711.html
Copyright © 2011-2022 走看看