C#线程池

using System;
using System.Threading;
public class ThreadTest
{
    static double number1 = -1;
    static double number2 = -1;
    public static void Main()
    {
        int maxThreadNum, portThreadNum;
        int minThreadNum;
        ThreadPool.GetMaxThreads(out maxThreadNum, out portThreadNum);
        ThreadPool.GetMinThreads(out minThreadNum, out portThreadNum);
        Console.WriteLine("最大线程数:{0}", maxThreadNum);
        Console.WriteLine("最小线程数:{0}", minThreadNum);
        int x = 15600;
        Console.WriteLine("启动第一个任务:计算{0}的8次方", x);
        //ThreadPool.QueueUserWorkItem方法在线程池中创建一个线程池线程
        //来执行指定的方法(用委托WaitCallback来表示),并将该线程排入线程
        //池的队列等待执行。
        ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), x);//x作为TaskProc1方法的参数   
        Console.WriteLine("启动第二个任务:计算{0}的8次方根", x);
        ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc2), x);
        while (number1 == -1 || number2 == -1) ;  //如果两个数字有任意一个不变化,
        //说明最少有一个线程没运行完继续循环直至线程池中所有线程运行完。
        Console.WriteLine("y({0})={1}", x, number1 + number2);
    }
    static void TaskProc1(object o)
    {
        number1 = Math.Pow(Convert.ToDouble(o), 8);
    }
    static void TaskProc2(object o)
    {
        number2 = Math.Pow(Convert.ToDouble(o), 1.0 / 8.0);
    }
}

原文地址:https://www.cnblogs.com/zztong/p/6695205.html