1

VS Concurrency Profiling 可以检测关键部分、内存分配、句柄等的资源争用。但我不确定它是否检测到 Slim Reader-Rriter ( SRW ) 锁的争用。

VS2012 并发分析器是否检测到 SRW 的争用?

编辑:示例代码和更多细节。

EnterCriticalSection(&cs);
// Use
LeaveCriticalSection(&cs);

现在,如果上述代码被多个线程同时执行,第二个线程将无法获得锁,因此会发生争用。VS Concurrency Profiler 将报告 ( count+1 ) 相同。它将被添加到命名的 CScs中(如代码中所示)。同样,如果线程不能立即持有它,则会报告互斥锁上的锁定、句柄上的等待(事件、计时器等)。

问题是关于 SRW - VS 报告相同吗?

4

1 回答 1

0

您是在询问 VS 2012 中“分析”菜单下的“并发可视化工具”吗?只要发生阻塞(即线程被阻塞等待锁定等),该工具就会检测到争用,因为它基于内核调度程序 ETW 事件,只要线程阻塞就会发生。阻止在 UI 中显示为红色。

现在,包括 SRW 在内的很多锁通常会在等待之前旋转一段时间,以防发生争用;并且通常可以在旋转后获得锁定而无需阻塞(正是旋转的意图)。在这种情况下,由于没有阻塞,因此该工具无法知道发生了旋转(非常短的争用)。

希望这能回答你的问题。

于 2013-10-10T21:21:36.003 回答