博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C#多线程编程实战(原书第2版)》——1.7 线程优先级
阅读量:7061 次
发布时间:2019-06-28

本文共 816 字,大约阅读时间需要 2 分钟。

本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第1章,第1.7节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 线程优先级

本节将描述线程优先级的几种不同的可能选项。线程优先级决定了该线程可占用多少CPU时间。

1.7.1 准备工作

为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter1Recipe6目录中。

1.7.2 实现方式

请执行以下步骤来了解线程优先级的工作方式:

1.启动Visual Studio 2015。新建一个C#控制台应用程序项目。

2.在Program.cs文件中加入以下using指令:

102270ce06c5d6ea718bbc7601dcaeb6e3c410d0

3.在Main方法下面加入以下代码片段:

efa5501f6d00546e9a796459e112c5bce8c91437
f289b9b4f994b51015a8a3f40717e3701429ba5e
31a3d1f1d0edf0bf1ce30f9ad03c6e116bc1a7be

4.在Main方法中加入以下代码片段:

5b8c9cdf7cd0d727aa3511ffb371b2860e4d67e8

5.运行程序。

1.7.3 工作原理

当主程序启动时定义了两个不同的线程。第一个线程优先级为ThreadPriority.Highest,即具有最高优先级。第二个线程优先级为ThreadPriority.Lowest,即具有最低优先级。我们先打印出主线程的优先级值,然后在所有可用的CPU核心上启动这两个线程。如果拥有一个以上的计算核心,将在两秒钟内得到初步结果。最高优先级的线程通常会计算更多的迭代,但是两个值应该很接近。然而,如果有其他程序占用了所有的CPU核心运行负载,结果则会截然不同。

为了模拟该情形,我们设置了ProcessorAffinity选项,让操作系统将所有的线程运行在单个CPU核心(第一个核心)上。现在结果完全不同,并且计算耗时将超过2秒钟。这是因为CPU核心大部分时间在运行高优先级的线程,只留给剩下的线程很少的时间来运行。

请注意这是操作系统使用线程优先级的一个演示。通常你无需使用这种行为编写程序。

转载地址:http://fcbll.baihongyu.com/

你可能感兴趣的文章
Java原子类--框架
查看>>
mysql-5.7.19免安装版的配置方法
查看>>
Spring IoC容器初始化过程学习
查看>>
后缀树
查看>>
layer.js中layer.tips
查看>>
字节跳动Android面试凉凉
查看>>
数据结构(1):C语言总结
查看>>
云计算的三种服务模式:IaaS,PaaS和SaaS(转载)
查看>>
JVM垃圾回收机制
查看>>
背包问题
查看>>
要吃鲷鱼到岛上钓
查看>>
图片自适应宽度显示正方形
查看>>
如何提高队列的消息处理效率
查看>>
Java中的代理
查看>>
Android深度探索读后感 第三章
查看>>
Aidl
查看>>
顺序表的静态建立
查看>>
「技巧」如何快速安装 Sketch 插件
查看>>
C#中对文件的操作小结
查看>>
事件流
查看>>