进程
*进程(prcess)是计算机中的程序关于某数据集合的一次运行活动
*是系统进行资源分配和调度的基本单位,是操作系统结构的基础
*打开一个应用程序就是在操作系统上开启一个进程
*进程之间可以相互独立,互不干扰。也可以相互访问、操作
线程
*操作系统能够进行运算调度的最小单位
*它被包含在进程之中,是进程中的实际运作单位
*已掉线城指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程
*简单理解:进程就是代码从上到下运行的一条“管道”
多线程
概念
进程里面可以拥有多个线程
我们可以通过代码打开多个线程
语法
在这里插入代码片namespace DuoXianCheng
{
class Program
{
static bool isrunning=true;//结束线程的标识
static void Main(string[] args)
{
#region 语法
//线程类 Thread
//需要引入命名空间 using System.Threading;
//1.申明新线程
// 执行的代码需要 封装 到函数里面
// 新线程 将要执行的代码 封装到一个函数中
Thread t = new Thread(NewThreadLogic);
//2.启动线程
t.Start();
//3.设置为后台线程
//当前台 主线程 程序结束的时候,后台线程 也会结束
t.IsBackground=true;//设置为后台线程
//4.关闭释放一个线程
//如果线程不是死循环,档程序结束时就相当于关闭了,然后t=null就释放
//如果线程是死循环,终止线程可以有2种方式
//4-1 bool标识
isrunning = false;
//4-2 通过线程提供的方法
#pragma warning disable SYSLIB0006 // 类型或成员已过时
t.Abort();
#pragma warning restore SYSLIB0006 // 类型或成员已过时
//5.线程休眠 1s=1000毫秒
Thread.Sleep(0);//让目前线程休眠多少毫秒,注意:在哪个线程里用就是哪个线程休眠
#endregion
#region 线程之间数据共享
//多个线程使用的内存是共享的,都属于该进程
//可以通过加锁的形式避免内存之间出现冲突
//lock关键字
//lock(引用类型对象obj){}
//当lock出现时,检查obj是否被锁住,否则锁住obj,执行lock语句块;是则等待obj解锁然后锁住obj执行语句块
#endregion
#region 多线程的意义
//可以专门处理一些复杂耗时的逻辑
//例如,网络通信等
#endregion
}
/// <summary>
/// 新线程的测试函数
/// </summary>
static void NewThreadLogic()
{
while (isrunning)
{
Console.WriteLine("这是一个新线程");
}
}
}
}