C#系列之多线程

目录

1.什么是进程?

2.什么是线程?

3.什么是多线程?

4.语法相关

5.线程休眠

6.线程之间共享数据

7.多线程对于我们的意义


1.什么是进程?

了解线程前先了解进程。

进程是计算机中的程序关于某数据集合上的一次运行活动。是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

打开一个应用程序就是在操作系统上开启了一个进程,进程之间可以相互独立运行,互不干扰。进程之间也可以相互访问,操作。

操作系统:

电脑操作系统:Windows,MacOS,Unix,Linux.

手机操作系统:Android,IOS,HarmonyOS

2.什么是线程?

线程是操作系统能够进行运算调度的最小单位

它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,我们目前写的程序都在主线程中。

简单理解线程:就是代码从上到下运行的一条“管道”。

3.什么是多线程?

我们可以通过代码开启新的线程,可以同时运行代码的多条“管道”就叫多线程。

4.语法相关

线程类Thread

需要引用命名空间:using System.Threading;

 1 声明一个新的线程

注意:线程执行的代码需要封装到一个函数中。

新线程将要执行的代码逻辑被封装到了一个函数语句块中。

Thread t=new Thread(NewThreadLogic);
static void NewThreadLogic()
{
  //新开线程,执行代码逻辑,在该函数语句块中
  Console.WriteLine("新开线程代码逻辑");
}

 2 启动线程

t.Start();

 3 设置为后台线程

当前台线程都结束时,整个程序就结束了,即使后台线程还在运行。

后台线程不会防止应用程序的进程被终止。

如果不设置为后台线程,可能导致进程无法正常关闭。

如果不设置后台线程,设置死循环时会无限循环。设置后台线程后,主线程结束则结束循环。

t.IsBackground=true;

 4 关闭释放一个线程

如果开启的线程中不是死循环,是能够结束的逻辑,那么不用刻意的去关闭它。

如果是死循环,想要中止这个线程,有两种方式:

4-1死循环中bool标识

Console.ReadKey();
isRunning=false;
Console.ReadKey();

4-2中止线程

下面介绍的中止线程的方法是有平台差异的,有一些平台不能使用以下的中止方法,会发生报错。

t.Abort();

如果害怕报错,就使用异常捕获的方法try——catch(如果你忘记了异常捕获,就到本专栏中搜索异常捕获,我在C#系列之异常捕获中有关于异常捕获的详细讲解)的方法来装程序,但是目前C#版本直接使用第一种方法即可,那种方法在.Net core版本中无法中止。

try
{
  t.Abort();
  t=null;
}
catch
{

}

5.线程休眠

所谓线程休眠就是让线程休眠多少毫秒:1s=1000毫秒

在哪个线程里执行就休眠哪个线程:

Thread.Sleep(1000);

括号里面是休眠的时长,你可以根据自己的需求设置时间,记住里面是毫秒。

while(isRunning)
{
 Thread.Sleep(1000);
 Console.WriteLine("新开线程代码逻辑");
}

6.线程之间共享数据

多个线程之间使用的内存是共享的,都属于该应用程序,所以要注意,当多线程同时操作同一片内存区域时,可能会出现问题。可以通过加锁的方式避免问题。

lock

当我们在多个线程当中想要访问同样的东西,进行逻辑处理时,为了避免不必要的逻辑顺序执行的差错。lock引用类型的对象。

while(true)
{
  lock(obj)
  {
    Console.WriteLine("...");
  }
}

缺点:使程序运行变慢。

7.多线程对于我们的意义

可以用多线程专门处理一些复杂耗时的逻辑,比如:寻路,网络通信等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nicole Potter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值