当前位置: 首页 > news >正文

C# 使用Thread类建线程

C# 使用Thread类建线程

目录

  • C# 使用Thread类建线程
  • 引言
  • Thread类
  • 启动线程
  • 优先级
  • 后台运行
  • 线程状态
  • 线程名称
  • 线程ID
  • 最后

引言

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。线程是我们程序常用的并行运行控制手段,进程可以是单线程也可以使多线程,这里我用C# 中的Thread类构建线程来简要地说一下线程的基础使用。

Thread类

Thread类位于System.Threading命名空间下,System.Threading命名空间提供一些可以进行多线程编程的类和接口。Thread类主要用于创建并控制线程、设置线程优先级并获取其状态。

启动线程

Thread类的使用确实方便,受到大部分人的喜爱。看下面代码通过定义myThread为线程对象,定义开始运行的函数为ThreadLoop,Priority属性定义其优先级,IsBackground=true置为后台线程,Name给线程取名。通过Start()方法启动线程。

private void  Thread_Start()
{Thread myThread = new Thread(new ThreadStart(ThreadLoop))//指定线程函数{Priority= ThreadPriority.BelowNormal,//指定优先等级IsBackground = true,//可后台运行Name = "my_Thread"//线程名}; //启动线程myThread .Start();}public void ThreadLoop()
{//打印线程IDConsole.Write($" myThread.ID:{myThread.ManagedThreadId}\n");//打印线程状态Console.Write($" myThread.state:{myThread.ThreadState}\n"); //休眠thread.sleep(100);while(true){}
}

优先级

优先级(Priority)指示线程的调度优先级。该类设置的优先级为枚举类型,可以设置也可以随时读取,其从低到高包括Lowest, BelowNormal, Normal, AboveNormal, Highest。

后台运行

通常主线程之外我们会定义为后台线程,即IsBackground = true。前台线程执行完后,不管后台线程有没有执行完毕,都会直接关闭后台进程。

线程状态

线程状态是以枚举位控制的方式表示的, System.Threading.ThreadState 包括有 10个状态
Running = 0x0,
StopRequested = 0x1,
SuspendRequested = 0x2,
Background = 0x4,
Unstarted = 0x8,
Stopped = 0x10,
WaitSleepJoin = 0x20,
Suspended = 0x40,
AbortRequested = 0x80,
Aborted = 0x100
通常我们用Start()方法启动线程;使用Abort()方法来停止线程;通过thread.sleep()方法来进入休眠(WaitSleepJoin)状态;通过Suspend()来挂起线程;通过Resume()方法来恢复继续挂起的线程。

线程名称

线程名(Name)顾名思义,线程的名字,用来区分不同的线程。

线程ID

线程ID(ManagedThreadId)为托管线程的唯一标识符,编号。

最后

此篇以最简要地概括的线程的基本使用,包括了大部分常用操作。在实际运用中如何配合使用,以及解决线程冲突、时间控制、卡顿、多线程共享等问题是需要更深入的分析和添加其它方法综合运用的。

http://www.lryc.cn/news/215454.html

相关文章:

  • asyncio协程框架
  • TSINGSEE智慧安防:AI人员入侵检测算法的工作原理及应用场景概述
  • Python:PDF转长图像和分页图像
  • 第48天:内置对象方法、 前端基础之BOM和DOM
  • CMake系列EP02: 构建可执行程序和库
  • 比亚迪今年的薪资。。
  • 【OpenCV实现图像找到轮廓的不同特征,就像面积,周长,质心,边界框等等。】
  • 数仓建模—数仓建设概论
  • Docker dnmp 多版本php安装 php8.2
  • Distilling the Knowledge in a Neural Network【论文解析】
  • 基于深度学习的自动驾驶汽车语义分割与场景标注算法研究。
  • 国内可用超丝滑ChatGPT4.0(附网址及微信入口)
  • linux入门---线程的同步
  • UI设计一定不能错过的4款常用工具
  • JavaScript 基础 - 第2天
  • MyBatis和JDBC异同点
  • 关于yarn安装一些东西报错时的处理方法
  • datagrip 使用自定义参数
  • css实现平行四边形按钮
  • Jmeter只能做性能测试吗?
  • Jmeter调用测试片段 —— 模块控制器
  • 数组类型题目总结
  • 机器学习2:决策树--基于信息增益的ID3算法
  • centos7完全卸载和安装mysql8
  • 常用的解析XML的开源库
  • SQLITE3 函数接口
  • RISC-V IDE MRS无感远程协助模块详解
  • APA技术方案及关键点
  • WordPress外链页面安全跳转插件
  • 【牛客网】安全—加密和安全