线程基础

   Windows 为什么要支持线程?

    在早期的计算机,OS 没有线程的概念,整个系统执行着一个单线程,CPU 资源都被一个线程占用,你只能单一的处理一个

    计算任务,比如单一处理打印,或一些其他的计算任务,当任务出BUG现异常,程序会停止响应,处理方式就是重启机器,

    为了解决这个问题,基于多线程技术的操作系统MicroSoft Windows NT发展起来了.Windows NT 是最提出线程概念的Windows 

     OS.

     进程:抽象的概念是指应用程序要使用的资源的集合。

     线程:指对CPU 进行虚拟化.Windows 为每个进程都提供了该进程专用的线程(CPU 分片 抽象出来的一个专用CPU 概念)。

 

  线程开销:

  1.线程内核对象

  2.线程环境块

  3.用户模块栈

  4.内核模式堆栈

  5.DDL线程链接和线程分离(Attach AND detach)

  

  使用线程的理由:

  1.可响应性.

    Windows 为每个进程提供它自己的线程,确保发生死循环的时候应用程序不会阻止其他的应用程序,在GUI 应用程序中,可以将一些工作交给

  一个线程进行,使GUI 线程可以灵敏的响应用户,不会出现以前的那些windows 程序,冻结的情况。

  2.性能

    由于Windows 每个CPU 调度一个线程,而且多个CPU 能并发执行这些线程,所以,充分调动CPU 的计算能力,并发操作能显著的提高应用程序

  的性能。

 

  CLR 线程的种类

  1.前台线程:执行系统确实想要执行的任务,比如我想写一篇文章,比如处理我写文章的这个线程就是前台线程.

  2.后台线程:非关键性任务,比如写文章时候系统进行的拼写检查.

  

using System;
using System.Threading;
namespace BackGroundTreadTest
{
    class Program
    {
        static void Main()
        {
            Thread t = new Thread(Worker);
            t.IsBackground = true;//Change it to a background Thread
            t.Start();
            Console.WriteLine("Main Thread.....");
        }

        private static void Worker()
        {
            Thread.Sleep(10000);
            Console.WriteLine("Working....");
        }
    }
}

这一章节是操作系统线程的基本概念为异步并行编程做铺垫.

 

   

 

 

   

  

   

 

   

posted @ 2016-06-29 23:48  JerryDanks  阅读(664)  评论(0编辑  收藏  举报