c# - 在 .NET 中寻找用于并发的静态代码分析工具,如 CheckThread for java

标签 c# .net multithreading task-parallel-library

<分区>

我正在用 c# 实现并发 .NET 数据结构(如 ConcurrentDictionaryBlockcingCollection 等)。这不仅仅是在从不同线程访问时不要忘记锁定对象。它需要复杂的锁定策略来最大化并行执行时间。

我知道有一个工具,一种用于 .NET 系统并发测试的框架,名为 CHESS .

问题:是否还有一种工具可以通过静态代码分析发现并发/线程问题?类似于 CheckThread这是用于 java 的。

最佳答案

这是一组有助于并发编程的资源...它们是静态工具和基于运行时的工具的混合。

Intel Inspector XE/Parallel Studio

英特尔在 Parallel Studio 中提供了一些有助于并发开发的工具,但他们的 Parallel Advisor 仅适用于 C/C++。

但对于 C#,您可以使用他们的 Inspector XE(以前称为 Intel 线程检查器)进行运行时线程检查


PRESharp(微软软件卓越中心)

这里似乎提到了一个叫做 PRESharp 的东西:

现在我以前没听说过...只有听起来相似的 PREFast,我过去曾用它来静态分析一些 C 驱动程序代码。我怀疑这是 Microsoft 的内部工具,除非您获得特殊访问权限,否则其他人无法使用。


静态分析工具

这里有一大堆静态分析工具(例如 FXCop)。

和这里提到的 Typemock Racer:

值得注意的是 Coverity Prevent,它声称通过静态分析 C/C++、Java 或 C# 代码(由 NASA 评级)来检测并发缺陷。


WinDBG + SOSEX

其他有助于并发编程的工具是 WinDBG(Windows 调试工具的一部分,分布在 Windows SDK 中),它比 Visual Studio 调试器更强大。

注意:如果您在系统中安装 Windows Driver Kit 8,您现在可以从 Visual Studio 2012 内部使用功能更强大的用户模式调试器,它与 WinDBG 具有同等功能。

您还可以获得扩展它的 WinDBG 插件,例如SOSEX 插件添加了 !dlk 命令,可以帮助确定死锁的原因。


并发可视化工具(在 Visual Studio 2010+ 中)

Visual Studio 中有 Concurrency Visualizer 和一个 SDK。


一般并发编程设计注意事项


视频资源

这里有一系列精彩的视频,可为您提供有关调试 .NET 应用程序的一般建议:

关于c# - 在 .NET 中寻找用于并发的静态代码分析工具,如 CheckThread for java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765854/

相关文章:

c# - 无法加载文件或程序集 'BusinessObjects.Enterprise.Sdk.ZipLib.netmodule'

.net - 在构建服务器上运行 Moles - 有什么想法可以跳过代码生成吗?

java - Java 中的 UDP 服务器

c# - 如何从 C++/C# 调用此 DLL 函数

C# 嵌套泛型在使用约束时区别对待

c# - 仅在特定时间运行一次 azure 函数?

java - "Please wait"有延迟的消息

c# - "Add to My Drive"按钮背后的代码

c# - 新项目的 Linq to SQL

swift - 使用 Swift 多线程组合数组中的项目