HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

用 PostSharp 对.NET 做死锁检测

  • 2012-09-25
  • 本文字数:824 字

    阅读完需:约 3 分钟

AOP 框架 PostSharp 的开发公司 SharpCrafters 开发了一款即插即用的死锁检测工具包。只要在项目中增加一行代码,这个工具包就可以对 Mutex、Monitor、ReaderWriterLock 等大部分标准的基本锁机制进行死锁检测。

当线程等待锁超过 200 毫秒,工具包将执行一道死锁检测例程。如果检测到死锁,它会向受该死锁影响的所有线程扔出 DeadlockException。异常中详细报告了所有受影响的线程和锁,供用户分析并修复问题。

死锁检测本身并不十分困难,但需要将大量的刻板代码细致地插入到程序的各个部位。 PostSharp Threading Toolkit 使用 IL 重写技术自动地注入这些代码到锁语句周围。

有几点需要注意。PostSharp 用了十分保守的逻辑去防止误报;他们认为错误地扔出一个 DeadlockException 比一个没有被检测到的死锁更糟糕。而且,它不能用于非对称锁,例如 ManualResetEvent,、AutoResetEvent,、Semaphore 和 Barrier,因为“并不清楚哪个线程负责‘发信号’或‘释放’同步资源”。

它能处理的锁包括:

  • Mutex:WaitOne、WaitAll、Release
  • Monitor:Enter、Exit、TryEnter、TryExit(包括 C#关键字 lock;不支持 Pulse 和 Wait 方法)
  • ReaderWriterLock:AcquireReaderLock、AcquireWriterLock、ReleaseReaderLock、ReleaseWriterLock、UpgradeToWriterLock、DowngradeToReaderLock(不支持 ReleaseLock、RestoreLock)
  • ReaderWriterLockSlim:EnterReadLock、TryEnterReadLock、EnterUpgradeableReadLock、TryEnterUpgradeableReadLock、EnterWriteLock、TryEnterWriteLock、ExitReadLock、ExitUpgradeableReadLock、ExitWriteLock
  • Thread:Join

PostSharp Threading Toolkit 以 BSD 2-Clause 协议发布于 GitHub

查看英文原文 http://www.infoq.com/news/2012/09/PostSharp-Deadlock


感谢郭晓刚对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-09-25 23:172395

评论

发布
暂无评论
发现更多内容

如何选择需求管理软件?10个精选需求管理工具分享

爱吃小舅的鱼

需求管理 需求管理工具

Go 语言中的结构体内存对齐你了解吗?

江湖十年

Go 面试 后端 Go web 八股文

Loopback for Mac(mac虚拟音频设备) v2.3.2直装版

理理

Downie 4 for Mac(视频下载工具)兼容14系统 v4.7.2中文版

理理

EverWeb for Mac(网页设计软件) v4.2.1中文版

理理

达芬奇19破解版下载 DaVinci Resolve Studio19中文版详细安装教程

理理

迅雷精简版 for Mac(迅雷下载工具) v5.0.9中文免费版

理理

Pixelmator Pro for Mac(媲美PS的修图软件) v3.6.4中文激活版

理理

现代码头装卸系统:技术创新与效率提升

天津汇柏科技有限公司

智慧码头

竞速赛车游戏推荐:极品飞车14:热力追踪 (Win/Mac) 安装包

你的猪会飞吗

Mac游戏分享 mac单机游戏

Boris FX Mocha Pro 2024 for Mac最新版下载 Mocha Pro 2024 新功能介绍

理理

MySQL Workbench for mac(数据库工具) v8.0.21激活版

理理

MiniMax闫俊杰:国内模型远不及GPT-4;OpenAI隐瞒黑客曾入侵其内部系统|AI日报

可信AI进展

人工智能

ELB Ingress网关助力云原生应用轻松管理流量

华为云开发者联盟

云原生 华为云 ingress 华为云开发者联盟 企业号2024年7月PK榜

StarRocks跨集群迁移最佳实践|得物技术

得物技术

数据库 OLAP StarRocks 企业号2024年7月PK榜

AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界

汀丶人工智能

人工智能 agent metagpt

百度Feed业务数仓建模实践

百度Geek说

大数据 流批一体 数仓建模 企业号2024年7月PK榜

cad二维三维绘图软件 Autodesk AutoCAD 2021中文破解资源

理理

html5表单发送邮件

tbapi

php

Termius mac破解版 Mac系统上运行的SSH工具

理理

【评测有奖】参加 EMR Serverless Spark 产品评测,赢机械键盘、充电宝等礼品!

阿里云大数据AI技术

数据挖掘 spark Serverless EMR

macOS 13 Ventura (苹果最新系统) v13.6.4正式版

理理

央视揭露:上百元的AI填报高考志愿真的靠谱吗?阿里云新增两位AI圈“代言人”!|AI日报

可信AI进展

人工智能

用PostSharp对.NET做死锁检测_.NET_Jonathan Allen_InfoQ精选文章