zoukankan      html  css  js  c++  java
  • C# 并行编程之线程池

    当需要编写多个线程同时执行的代码时,可以使用多线程简化代码的编写量,同时将线程的调度交给系统自动进行维护

    这就线程池在此发挥作用的时候

    下面来看一个例子:

    public class ThreadPoolTest
        {
            public void Invoke()
            {
                ThreadPool.QueueUserWorkItem (Method);
                ThreadPool.QueueUserWorkItem (Method2, "Hello World");
            }
    
            public void Method(object state)
            {
                Console.WriteLine ("thread is running,thread Id is: {0}",Thread.CurrentThread.ManagedThreadId);
            }
    
            public void Method2(object state)
            {
                Console.WriteLine ("thread is running,thread Id is: {0}",Thread.CurrentThread.ManagedThreadId);
                Console.WriteLine ("  " + (string)state);
            }
    
        }

    ThreadPool 位于System.Threading 命名空间下,这是一个静态类,我们主要使用ThreadPool.QueueUserWorkItem(WaitCallBack callBack,object state)方法向线程池中添加操作

    该函数包含两个参数,其中WaitCallBack 是一个委托类型,表示一个不带返回值包含一个object参数的方法,这一点和Thread中的ParameterizedThreadStart一致,第二个参数就是方

    法所需要传的参数了。

    把方法加入到线程池后,如果线程池有空闲线程资源,线程池会自动创建一个线程来执行这个方法,否则就会加入等待队列中。

  • 相关阅读:
    bzoj4804
    bzoj2962
    bzoj4827
    bzoj2553
    bzoj3611
    BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
    BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
    BZOJ 1634: [Usaco2007 Jan]Protecting the Flowers
    BZOJ 1631: [Usaco2007 Feb]Cow Party
    BZOJ 2582: [Usaco2012Jan]Bovine Alliance
  • 原文地址:https://www.cnblogs.com/yayaxxww/p/3545832.html
Copyright © 2011-2022 走看看