【发布时间】:2010-12-22 00:22:47
【问题描述】:
我的应用程序使用了许多关键部分,我想知道其中哪些可能会导致高争用。我想避免瓶颈,以确保可扩展性,尤其是在多核、多处理器系统上。
当我注意到在应用程序负载过重时等待进入临界区时有许多线程挂起时,我已经意外地发现了一个。这很容易解决,但是如何在它们成为真正的问题之前检测到如此高争用的关键部分呢?
我知道有一种方法可以创建一个完整的转储并从中获取该信息(不知何故?)。但这是一种相当侵入性的方式。是否有应用程序可以即时诊断此类问题的方法?
我可以使用结构 _RTL_CRITICAL_SECTION_DEBUG 中的数据,但有人指出,这在不同的 Windows 版本中可能是不安全的:http://blogs.msdn.com/b/oldnewthing/archive/2005/07/01/434648.aspx
有人可以建议一种可靠且不太复杂的方法来获取此类信息吗?
【问题讨论】: