自动验证一些线程限制?(C#)

Rom*_*kov 6 c# multithreading fxcop

我们的代码库在注释中编码了很多线程限制 - 例如:

  • 这个类是线程安全的(可以从任何线程安全地访问所有公共方法)
  • 必须锁定"xyz"才能访问/调用任何公共成员
  • 只能从线程"xyz"访问(通常但不总是指GUI线程)
  • 如果两者都需要,必须在锁定"xyz"后进行此锁定

前三个可以在班级和个人成员中看到.

我已经搜索了任何可以至少部分验证满足这些约束的解决方案.我意识到自动完成这一过程存在很大的局限性,但即使是工具的一点帮助也会有所帮助.我找不到任何东西.

你能建议一个沿着这些方向做某事的工具吗?也许是一个FxCop规则集,通过将上述限制编码为属性来工作?

Mar*_*ell 1

我不知道任何线程安全特定的属性,只是因为它通常太复杂了。“测试”线程代码(添加额外的代码Debug.Assert等)是 heisenbug 的常见原因。你可以看看《象棋》吗?这不是灵丹妙药,但可能会有所帮助。