zoukankan      html  css  js  c++  java
  • .NET 中的线程池和[ThreadStatic]属性

    本文实验了一下.NET 中的线程池和[ThreadStatic]属性的作用:

    class Program
    {
        [ThreadStatic]
        static int Number;
    
        static void Main(string[] args)
        {
            //for (int i = 0; i < 10; i++)
            //{
            //    ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc));
            //}
            for (int i = 0; i < 10; i++)
            {
                Thread t = new Thread(delegate()
                {
                    ThreadProc(null);
                });
                t.Start();
            }
            Console.WriteLine("Press any key to exit.");
            Console.Read();
        }
    
        static void ThreadProc(Object stateInfo)
        {
            Interlocked.Increment(ref Number);
            Console.WriteLine(Number);
        }
    
    }

    image

    图一

    image

    图二
    上图分别为ThreadPool和不用的结果。由图二可见,由于 ThreadStatic属性的作用,尽管Number是静态变量,每个线程中都各自独立。而由图一,由于线程池会重用线程,只有4个独立的Number变量创建出来。因此对于线程池,每个线程结束时清理静态变量是非常重要的。

  • 相关阅读:
    MySQL 第四天
    MySQL 第三天
    MySQL第二天
    MySQL第一天
    Day27-28 基础加强
    Day24-26 项目练习(图书商城)
    Day23 ajax
    Day22 文件上传下载和javaMail
    Day21 过滤器(Filter)
    小轮播图
  • 原文地址:https://www.cnblogs.com/foamliu/p/2125203.html
Copyright © 2011-2022 走看看