多线程Thread

多线程的意义

使用多线程可以充分利用CPU资源.提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.在处理大量的IO操作或处理的情况需要花费大量的时间时(如:读写文件,视频图像的采集,处理,显示,保存等)有较大优势

优点
  • 多线程可以把占据时间长的程序中的任务放到后台去处理而不影响主程序的运行
  • 程序的运行效率可能会提高
  • 在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程比较有用
不足
  • 如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换
  • 更多的线程需要更多的内存空间

这里需要了解一下这几个概念
并发(Concurrency)
逻辑上的同时发生,一个处理器(在不同时刻或者说在同一时间间隔内)"同时"处理多个任务。宏观上是并发的,微观上是按排队等待、唤醒、执行的步骤序列执行。并发性是对有限物理资源强制行使多用户共享(多路复用)以提高效率
并行(Parallel)
物理上的同时发生,多核处理器或多个处理器(在同一时刻)同时处理多个任务。并行性允许多个程序同一时刻可在不同CPU上同时执行
进程(Process)
程序在计算机上的一次执行活动。运行一个程序、启动一个进程。程序是死的(静态的),进程是活的(动态的)。Windows系统利用进程把工作划分为多个独立的区域,每个应用程序实例对应一个进程。进程是操作系统分配和使用系统资源的基本单位。进程包含一个运行-ing应用程序的所有资源、进程(占用的资源)间相互独立
线程(Thread)
轻量级进程,是进程的一个实体(线程本质上是进程中一段并发运行的代码),执行线程、体现程序的真实执行情况,是处理器上系统独立调度和时间分配的最基本的执行单元。同一进程的所有线程共享相同的资源和内存(共享代码,全局变量,环境字符串等),使得线程间上下文切换更快、可以在同一地址空间内访问内存
同步
如果一个程序调用某个方法,等待其执行所有处理后才继续执行,称这样的方法是同步的
异步
如果一个程序调用某个方法,在该方法处理完成之前就返回到调用方法,则这个方法是异步的

线程创建

C#中使用Thread类创建和控制线程,该类允许创建线程,以及设置线程的优先级

class ThreadTest
{
    static void Main(string[] args)
    {
        Console.WriteLine("程序在启动时创建一个线程,称为主线程");
        //创建线程
        Thread t = new Thread(ThreadMethod);
        //启动线程
        t.Start();          
        Console.ReadKey();
    }
    public static void ThreadMethod()
    {
        Console.WriteLine("ThreadMethod");
    }
}