多线程编程基础(上)
2011-04-07 16:52 Paul Wong 阅读(573) 评论(3) 编辑 收藏 举报进程:进程是运行中的程序,而一个进程由至少一个线程所组成的。
线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
PS:进程是系统分配各种资源的单位,而线程则是操作系统分配CPU的基本单位。
.NET中,线程由Thread类创建,而Thread类重要的方法:
Start():启动线程; Sleep(int):静态方法,暂停当前线程指定的毫秒数; Abort():终止一个线程; Suspend():挂起线程,以后还可恢复; Resume():恢复被Suspend()方法挂起的线程的执行。 |
使用Thread类创建线程时,只需提供线程入口,线程入口是通过ThreadStart代理(delegate)来提供的,其定义为:public delegate void ThreadStart(),由此定义可知,创建线程对象必须传给它一个方法。通俗的来说是:每个线程都对应着一个特定的线程函数,线程的执行体现着线程函数的执行。
如下简单创建线程:
SimpleThreadDemo
Thread.ThreadState 属性: ThreadState 属性的取值如下: Aborted:线程已停止; AbortRequested:线程的Thread.Abort()方法已被调用,但是线程还未停止; Background:线程在后台执行,与属性Thread.IsBackground有关; Running:线程正在正常运行; Stopped:线程已经被停止; StopRequested:线程正在被要求停止; Suspended:线程已经被挂起(此状态下,可以通过调用Resume()方法重新运行); SuspendRequested:线程正在要求被挂起,但是未来得及响应; Unstarted:未调用Thread.Start()开始线程的运行; WaitSleepJoin:线程因为调用了Wait(),Sleep()或Join()等方法处于封锁状态; |
线程的优先级: 由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest. 默认为:ThreadPriority.Normal |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述