一起谈.NET技术,VS 2010中内核窗户问题解析

简介:   随着微软Visual Studio 2010和.NET Framework 4.0的推出,微软向开发人员提供了创建多线程应用程序的更好的工具和类库。在这篇文章中,笔者将为您介绍Concurrency Visualizer的新功能是什么以及它能够提供什么类型的信息。

  随着微软Visual Studio 2010和.NET Framework 4.0的推出,微软向开发人员提供了创建多线程应用程序的更好的工具和类库。在这篇文章中,笔者将为您介绍Concurrency Visualizer的新功能是什么以及它能够提供什么类型的信息。

  要把Visual Studio 2010的Concurrency Visualizer功能真正地应用到业务中,你需要点击最初的资源冲突表上面的三个按钮。让我们首先点击左边的处理器利用率图表(见图4)。

  这个处理器利用率图表显示你的应用程序如何在使用处理器的整个状况的一个可视化的指标。这个图表显示Windows可用的逻辑处理器的数量。例如,在上面的图表中,一个英特尔酷睿2双核处理器在这个操作系统中启用了两个逻辑处理器。

  虽然这个剖析会话已经就位,但是,Visual Studio不仅要收集有关你的应用程序的信息,而且还要收集这个系统中每一个其它进程使用处理器的信息。采用默认的颜色方案,你自己的应用程序的处理器利用率用绿色显示,其它进程用黄色显示,空闲时间用灰色显示。

  在屏幕的上方,你可以看到一个滑动条。你可以使用这个滑动条放大和缩小这个图表。你还可以选择这个图表中的一个区域直接放大到选择中。这个图表是以时间为基础的:时间从左边向右边运行并且按照毫秒(也就是千分之一秒)显示。

  成功的线程的一个指标是你的应用程序的处理器使用能够超过一个逻辑处理器的限制。如果你的应用程序是计算密集型的,你的应用程序的绿色区域越接近图表的顶端,这个应用程序利用系统中多个逻辑处理器的效率就越高。

  Visual Studio提供的第二个、也是更有趣的图表是线程图表。要启动这个图表,可点击这个窗口上方的线程按钮,或者在上面的当前窗口下拉式菜单中选择同样名称的窗口。

  这个线程图表(图5)显示在你的应用程序生命周期期间存在的全部线程,当你执行这个应用程序的时候显示绿色,在等待同步的时候显示为红色,在执行输入/输出操作的时候显示紫色,或者在休眠的时候显示为蓝色。你看的图表中的绿色线条越多,通常就越好。此外,除了这个线程之外,你在上面还能看到两条线,用于监视硬盘读和写。如果你有一个以上的硬盘,那么,每一个硬盘都要增加两条线。

  再说一次。你可以使用鼠标放大这个图表或者选择使用上面的放大滑动条。你还可以从左上角排序这个图表。在默认状态下,线程是按照开始时间排序的。但是,你还可以通过监视的操作或者停止时间排序。

  除了基本的排序之外,这个线程图表允许你使用顶端的箭头按钮按照方便的次序排列线程。这个功能是有用的,如果你需要比较两个或者更多的线程的功能的话。通过把这些线程相互之间紧密地排列在一起,你的工作会更容易。

  当你要微调一个特定时间段的时候,这个线程图表中显示的线程图表完全是可点击的。这意味着在放大到足够近的时候,你能够看到以不同颜色表示的段。你可以点击每一个段查看一个特定的段的详细信息。还需要指出的是,每当你点击一个段的时候,Visual Studio如何在这个图表下面给你一些额外的指令。

  每当你在线程图表中点击一个段的时候,你在这个图表下面都能看到包含有趣的信息的额外标签。例如,Visual Studio能够向你显示一个所谓的解除封锁的栈。这个栈向你提供有关允许另一个线程运行的一个线程的信息。这个示意标签也是有用的。这个非神秘化(Demystify)按钮向你提供有关这个产品中的一个特定功能的更多信息。Concurrency Visualizer功能提供的第三个主要窗口叫做内核(Cores)。从技术上说,这个名称不是很准确,因为这个内核功能的目的是显示你的应用程序利用系统中的多个逻辑处理器的效率如何。

  然而,这个内核功能将发挥作用,即使你有多个物理处理器而不是多个内核。这种情况的发生是因为对于操作系统来说,一个物理处理器或者处理器中的多个内核是一样的:它们都是逻辑处理器,都能够在上面执行线程。但是,即使有这么小一点的技术准确性,“内核”这个词在这个案例中有理由是正确的,因为目前的大多数系统事实上都是采用多核处理器,而不是采用多个处理器。

  这个内核窗口(见图6)允许你看到一个时间表,在这个系统上的每一个逻辑处理器上能够执行多少工作。就像使用其它两个窗口一样,你可以方法内核图片,把鼠标放在时间表上查看更多的细节。这个图表上的每一个线程都有不同的颜色,图表的下面显示文字说明。如果你的应用程序包含十几个线程,发现不同的颜色是很困难的,但是,在大多数情况下,这个图片的是很容易使用的。

  理解图片

  要能够看到关于你的线程的详细信息和这些线程是如何运行的对于开发人员的工具箱都是一个极好的增加的工具。然而,你编写的应用程序越复杂,理解这些图片和细节的含义就越重要。如果把事情简化一些,目前开发人员最紧迫的需求是保证应用程序能够最充分地利用当前处理器的多个内核。这个事情本身就有些复杂,但是,当你要保证你的代码开足油门运行的时候,这个事情就会更复杂。这要求理解不同的性能瓶颈以及它们如何在微软Visual Studio显示的不同的剖析图表中表现自己。

  完全理解这些图表是另一篇文章的话题。但是,你首先可以从一个很好的小的Visual Studio 2010帮助主题开始。这个主题的名称是“行为糟糕的多线程应用程序的常见方式”,可以在网络上的MSDN说明文件中找到。

  结论

  在这篇文章中,我们学习了名为“Concurrency Visualizer”的Visual Studio 2010的新功能是什么以及它能够提供什么类型的信息。此外,你了解到你至少需要一个高级版本的微软Visual Studio软件来使用这个功能。即使使用高级版本,你还需要使用至少Windows Vista操作系统。

  特别是如果你在使用Task Parallel Library (TPL,任务并行库)或者PLINQ连接你的应用程序,那么,你将从微软Visual Studio 2010中提供的新的调试和剖析工具中得到极大的好处。例如,通过使用Concurrency Visualizer把新的并行栈与并行任务结合在一起,这将更容易保证你的应用程序最充分地利用现代的多核处理器。

目录
相关文章
|
5月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
12月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
900 85
|
12月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
839 31
|
12月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
609 5
|
12月前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
446 4
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
735 6
|
12月前
|
编解码 人工智能 并行计算
基于 Megatron 的多模态大模型训练加速技术解析
Pai-Megatron-Patch 是一款由阿里云人工智能平台PAI 研发的围绕英伟达 Megatron 的大模型训练配套工具,旨在帮助开发者快速上手大模型,打通大模型相关的高效分布式训练、有监督指令微调、下游任务评估等大模型开发链路。本文以 Qwen2-VL 为例,从易用性和训练性能优化两个方面介绍基于 Megatron 构建的 Pai-Megatron-Patch 多模态大模型训练的关键技术
|
12月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
415 1
|
12月前
|
机器学习/深度学习 数据采集 自然语言处理
基于Python的情感分析与情绪识别技术深度解析
本文探讨了基于Python的情感分析与情绪识别技术,涵盖基础概念、实现方法及工业应用。文中区分了情感分析与情绪识别的核心差异,阐述了从词典法到深度学习的技术演进,并通过具体代码展示了Transformers架构在细粒度情感分析中的应用,以及多模态情绪识别框架的设计。此外,还介绍了电商评论分析系统的构建与优化策略,包括领域自适应训练和集成学习等方法。未来,随着深度学习和多模态数据的发展,该技术将更加智能与精准。
740 1
|
12月前
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。

热门文章

最新文章

推荐镜像

更多
  • DNS