VS2012 中的并发分析 - 读取器写入器锁

Concurrency Profiling in VS2012 - Reader Writer Locks

本文关键字:读取 并发 VS2012      更新时间:2023-10-16

VS 并发分析可以检测关键部分、内存分配、句柄等的资源争用。但我不确定它是否检测到对超薄读取器 (SRW) 锁的争用。

VS2012 并发探查器是否检测到 SRW 争用?

编辑:示例代码和更多详细信息。

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

现在,如果所述代码由多个线程同时执行,则第二个线程将无法获取锁,从而导致争用。VS 并发探查器将报告相同的 (计数+1)。它将被添加到名为 cs 的 CS 中(如代码中所示)。同样,如果线程无法立即持有它,将报告锁定互斥锁,等待句柄(事件,计时器等)。

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

您是否在询问VS 2012中"分析"菜单下的"并发可视化工具"?只要发生阻塞(即线程被阻塞等待锁定等),该工具就会检测争用,因为它基于内核计划程序 ETW 事件,每当线程阻塞时都会发生这些事件。阻止在 UI 中显示为红色。

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

希望这能回答你的问题。