VS2012中的并发性分析 - 读写器锁定

时间:2013-10-04 05:26:53

标签: c++ multithreading visual-studio-2012 concurrency profiler

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

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

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

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

现在,如果所述代码同时由多个线程执行,则第二个线程将无法获取锁定,从而无法获得争用。 VS Concurrency Profiler将报告( count + 1 )相同的内容。它将被添加到名为cs的CS中(如代码中所示)。同样,如果线程无法立即保存,则会报告锁定互斥锁,等待句柄(事件,计时器等)。

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

1 个答案:

答案 0 :(得分:0)

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

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

希望这能回答你的问题。