C. *_*oss 3 c# testing multithreading
如何证明多线程在我的C#程序中有效?这是针对测试要求的.例如,我将不得不在记录器类中添加一些锁定(是的,我知道,我不应该编写自己的日志类),我需要一个测试用例来证明更改是有效的.
如果要测试锁定代码是否正确同步对日志的访问,则需要构建可确保争用的测试.这可能需要您重构代码,以便您可以注入一个模拟日志编写器类,该类可以在任意时间段内保存日志锁.
这是一个广泛的主题,你可以在StackOverflow上找到几个相关的问题,这些都值得一读:
CHESS是一个正在开发的框架,用于识别"断言违规,死锁,活锁,数据争用和内存模型错误".我实际上并没有使用它,但看起来它可能非常有用.
嗯,这可能听起来不对,但事实是你不能证明单元测试的多线程行为.话虽如此,您可以通过测试获得对代码的信心,并且随着时间的推移它可能实际上存在问题.
<rant>多线程代码是我在许多项目中存在的祸根.通常,人/开发人员没有做好工作所需的专业知识.在任何人在野外看到它之前,虫子经常被忽视很长一段时间,然后你无法重现这个问题来识别最新情况.此外,尝试通过调试"修复"损坏的多线程代码通常不是一种可行的方法.</咆哮>
无论如何,继续进行测试,做这么多并没有什么坏处,这很容易做到.只需启动N个线程,让它们等待一个ManualRestEvent,然后在一个紧凑的循环中调用你的api几十万次:). 但首先我会建议团队中的每个人都进行代码审查. 遍历每行代码,思考它并行执行.问你自己:
| 归档时间: |
|
| 查看次数: |
762 次 |
| 最近记录: |