C# 并行编程 之 ThreadPool的基本使用

来源:互联网 发布:知乎沙发挑选 编辑:程序博客网 时间:2024/06/03 17:15

概要

一个托管线程的创建需要数千个CPU周期,并且当发生线程切换时也会带来明显的开销。考虑线程的重用,避免不断重复创建新的线程是提高系统效率的一种方式。

线程池是一种提供效率的方式,它创建好一些线程由线程池引擎管理,开发者将需要处理的业务或操作封装成为【工作项】工作项被传递给线程池队列,由线程池中的不同的工作线程挑选并执行。当执行完毕后,线程并不被销毁,而是继续选择其他的工作项。

这里写图片描述

代码示例

using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace Sample8_1_threadpool_basic{    class Program    {        public static void Work1()        {            System.Console.WriteLine("ThreadWork1 run { ");            for (int i = 0; i < 20; i++)            {                System.Console.WriteLine("ThreadWork1 *****: " + i);            }            System.Console.WriteLine("ThreadWork1 run } ");        }        public static void Work2()        {            System.Console.WriteLine("ThreadWork2 run { ");            for (int i = 0; i < 20; i++)            {                System.Console.WriteLine("ThreadWork2 =====: " + i);            }            System.Console.WriteLine("ThreadWork2 run } ");        }        static void Main(string[] args)        {            ThreadPool.QueueUserWorkItem((stat) =>             {                Work1();            });            ThreadPool.QueueUserWorkItem((stat) =>            {                Work2();            });            Console.ReadLine();        }    }}

ThreadPool的接口

这里写图片描述

详见: https://msdn.microsoft.com/zh-cn/library/system.threading.threadpool_methods(v=vs.80).aspx

0 0
原创粉丝点击