没有合适的资源?快使用搜索试试~ 我知道了~
首页Windows系统下的进程、应用程序域与线程详解及多线程优化
Windows系统下的进程、应用程序域与线程详解及多线程优化
需积分: 10 7 下载量 172 浏览量
更新于2024-07-19
收藏 1.12MB DOCX 举报
多线程学习文档深入探讨了进程、应用程序域和线程在Windows系统中的角色和交互。进程是程序运行的基本单位,包含程序所需的资源,每个进程独立且隔离,一个进程的失败不会影响其他进程。应用程序域则是一种轻量级的进程,是.NET程序执行的逻辑区域,可以容纳多个程序集,并通过上下文管理对象状态。 线程是进程内的基本执行单元,进程的主线程通常由Main()方法启动。线程由CPU寄存器、调用栈和线程本地存储器组成,其中CPU寄存器记录线程状态,调用栈负责线程的内存管理和数据,而TLS则用于存储线程特有的状态信息。在单CPU系统中,多线程通过快速切换实现“并发”效果,虽然实际上是交替执行,但给人一种同时运行的错觉。 合理运用多线程可以提升系统性能,例如在处理大量数据时,可以创建异步线程来分担数据处理任务,让主线程保持响应能力。然而,需要注意的是,频繁的线程切换会消耗CPU资源,因此在设计多线程应用时需权衡并发度和效率,避免过度使用导致性能下降或同步问题。进程、应用程序域和线程之间的关系以及它们在多线程编程中的作用是理解并优化多线程设计的关键。更深入的内容,如如何创建和管理线程,同步机制,线程池的使用等,将在后续的"进程、应用程序域与上下文"章节中有详细讲解。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/9966508/bgb.jpg)
8@ 9 K97
8A=
运行结果如下
#
四、CLR 线程池的工作者线程
4.1 关于 CLR 线程池
使用 ! 与 H! 建立新线程非常简单,但通过此方法建立的线程难于管理,若建立过多的
线程反而会影响系统的性能。
有见及此, 引入 线程池这个概念。 线程池并不会在 初始化的时候立刻建立线程,而是在应用程序要创建线
程来执行任务时,线程池才初始化一个线程。线程的初始化与其他的线程一样。在完成任务以后,该线程不会自行销毁,而是
以挂起的状态返回到线程池。直到应用程序再次向线程池发出请求时,线程池里挂起的线程就会再度激活执行任务。这样既节
省了建立线程所造成的性能损耗,也可以让多个任务反复重用同一线程,从而在应用程序生存期内节约大量开销。
注意
:
通过
CLR
线程池所建立的线程总是默认为后台线程,优先级数为
ThreadPriority.Normal
。
#
4.2 工作者线程与 I/O 线程
线程池分为工作者线程(*)与 'FG 线程 两种,工作者线程是主要用作管理
内部对象的运作,'FG('&FG&&线程顾名思义是用于与外部系统交换信息,'G 线程的细节将在下一节详细说明。
通过 .(&*B& 和 !
*B 两个方法可以分别读取和设置 线程池中工作者线程与 'FG 线程的最大线
程数。在 :*3< 中最大线程默认为 3+P 数,在 :*5<、8< 中最大线程数默认为 3+<P 数,在近
年 '5B'+B'A 出现后,线程池的最大值一般默认为 0<<<、3<<<。
若想测试线程池中有多少的线程正在投入使用,可以通过 .( , &*B&
方法。
使用 线程池的工作者线程一般有两种方式,一是直接通过 Q&&*'方法,二是通过委托,
下面将逐一细说。
#
4.3 通过 QueueUserWorkItem 启动工作者线程
线程池中包含有两个静态方法可以直接启动工作者线程:
一为 Q&&*' ,*
二为 Q&&*' ,*BG,L#
先把 ,* 委托指向一个带有 G,L 参数的无返回值方法,再使用
Q&&*' ,*就可以异步启动此方法,此时异步方法的参数被视为 & 。
0 "
34
![](https://csdnimg.cn/release/download_crawler_static/9966508/bgc.jpg)
5("12"
84
+FF把 线程池的最大值设置为 0<<<
@ !0<<<B0<<<7
AFF显示主线程启动时线程池信息
C"9!97
DFF启动工作者线程
0< Q&&*' ,*% ,*7
00 E%7
03=
05
08(% ,*,L
0+4
0@! 3<<7
0A"9% ,*97
0C 9%*K97
0D=
3<
30FF显示线程现状
33(""
354
38""6":94<=>&'40=9B
3+B&"'7
3@ "7
3A=
3C=
运行结果
#
使用 Q&&*' ,*BG,L方法可以把 ,L 对象作为参数传送到回调函数中。
下面例子中就是把一个 " 对象作为参数发送到回调函数当中。
0 "
34
5("12"
84
+FF把线程池的最大值设置为 0<<<
@ !0<<<B0<<<7
A
![](https://csdnimg.cn/release/download_crawler_static/9966508/bgd.jpg)
C"9!97
D Q&&*' ,*% ,*B9- (97
0< E%7
00=
03
05(% ,*,L
084
0+! 3<<7
0@"9% ,*97
0A
0C"6"7
0D 9%*K>9?7
3<=
30
33FF显示线程现状
35(""
384
3+""6":94<=>&'40=9B
3@B&"'7
3A "7
3C=
3D=
运行结果
#
通过 Q&&*' 启动工作者线程虽然是方便,但 ,* 委托指向的必须是一个带有 G,L
参数的无返回值方法,这无疑是一种限制。若方法需要有返回值,或者带有多个参数,这将多费周折。有见及此, 提供
了另一种方式去建立工作者线程,那就是委托。
#
4.4 委托类
使用 线程池中的工作者线程,最灵活最常用的方式就是使用委托的异步方法,在此先简单介绍一下委托类。
当定义委托后, 就会自动创建一个代表该委托的类,下面可以用反射方式显示委托类的方法成员(对反射有兴趣的朋友
可以先参考一下“ 基础篇——反射的奥妙”)
0 "
34
5 "(% "7
8
剩余60页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/f57886b2424e467685b2f912adc599e3_qq_36163212.jpg!1)
qq_36163212
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)