zoukankan      html  css  js  c++  java
  • 进程和线程基础

    进程:进程是运行中的程序,而一个进程由至少一个线程所组成的。

    线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

    PS:进程是系统分配各种资源的单位,而线程则是操作系统分配CPU的基本单位。

    .NET中,线程由Thread类创建,而Thread类重要的方法:

    Start():启动线程;

    Sleep(int):静态方法,暂停当前线程指定的毫秒数;

    Abort():终止一个线程;

    Suspend():挂起线程,以后还可恢复;

    Resume():恢复被Suspend()方法挂起的线程的执行。

    使用Thread类创建线程时,只需提供线程入口,线程入口是通过ThreadStart代理(delegate)来提供的,其定义为:public delegate void ThreadStart(),由此定义可知,创建线程对象必须传给它一个方法。通俗的来说是:每个线程都对应着一个特定的线程函数,线程的执行体现着线程函数的执行。

    如下简单创建线程:

    using System;
    using System.Threading;
    namespace MultiThreads
    {
    class Program
    {
    public static void Main(string[] args)
    {
    Console.WriteLine("Main Thread");
    AssistThread assistThread=new AssistThread();
    //通过ThreadStart委托一个线程函数
    Thread aThread=new Thread(new ThreadStart(assistThread.threadMethod));
    aThread.Start();
    Console.ReadKey(true);
    }
    }
    class AssistThread
    {
    public void threadMethod()
    {
    int num=0;
    while(num<10)
    {
    Console.WriteLine("AssistThread's threadMethod Start!");
    num++;
    }
    }
    }
    Thread.ThreadState 属性:

    ThreadState 属性的取值如下:

    Aborted:线程已停止;

    AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止;

    Background:线程在后台执行,与属性Thread.IsBackground有关;

    Running:线程正在正常运行;

    Stopped:线程已经被停止;

    StopRequested:线程正在被要求停止;

    Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行);

    SuspendRequested:线程正在要求被挂起,但是未来得及响应;

    Unstarted:未调用Thread.Start()开始线程的运行;

    WaitSleepJoin:线程因为调用了Wait(),Sleep()或Join()等方法处于封锁状态;

    前后台线程:由于时间片的原因,虽然所有线程在微观上是串行执行的,但在宏观上可以认为是并行执行。

    线程有两种类型:前台和后台。我们可以通过线程属性IsBackground=false来指定线程的前后台属性(默认是前台线程)。

    区别是:前台线程的程序,必须等所有的前台线程运行完毕后才能退出;而后台线程的程序,只要前台的线程都终止了,那么后台的线程就会自动结束并推出程序。

    用法方向:一般前台线程用于需要长时间等待的任务,比如监听客户端的请求;后台线程一般用于处理时间较短的任务,比如处理客户端发过来的请求信息。

    线程的优先级:
    由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest.  默认为:ThreadPriority.Normal

     

  • 相关阅读:
    Maven项目中遇到的奇葩问题(续)
    Android高效率编码-细节,控件,架包,功能,工具,开源汇总,你想要的这里都有
    【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
    【SSH 基础】浅谈Hibernate--入门篇
    html代码规范
    sublime text3 --前端工程师必备
    搜索类网站记录 && 代理服务器
    前端必备:FastStoneCapture 和 Licecap &&& mingw c++ 编译执行
    关于交大二手市场的一点思考
    前端开发工程师相关书籍
  • 原文地址:https://www.cnblogs.com/nanyangzp/p/3156660.html
Copyright © 2011-2022 走看看