Профилирование параллелизма в VS2012 — блокировка чтения и записи

VS Concurrency Profiling может обнаруживать конфликт ресурсов для критической секции, распределения памяти, дескрипторов и т. д. Но я не уверен, обнаруживает ли он конфликт для Slim Reader-Rriter (SRW) блокирует.

Обнаруживает ли профилировщик параллелизма VS2012 конкуренцию за SRW?

EDIT: пример кода и дополнительная информация.

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

Теперь, если указанный код выполняется более чем одним потоком одновременно, второй поток не сможет получить блокировку и, следовательно, конфликт. VS Concurrency Profiler сообщит (count+1) то же самое. Он будет добавлен в CS с именем cs (как в коде). Точно так же будет сообщено о блокировке мьютекса, ожидании дескриптора (события, таймера и т. д.), если поток не может удержать его немедленно.

Вопрос по поводу SRW - VS сообщает то же самое?


person Ajay    schedule 04.10.2013    source источник


Ответы (1)


Вы спрашиваете о «визуализаторе параллелизма» в меню «Анализ» в VS 2012? Инструмент будет обнаруживать конфликты, пока происходит блокировка (то есть поток блокируется в ожидании блокировки и т. д.), поскольку он основан на событиях ETW планировщика ядра, которые будут происходить всякий раз, когда блокируется поток. Блокировка отображается красным цветом в пользовательском интерфейсе.

Теперь многие из этих блокировок, включая SRW, часто будут вращаться некоторое время, прежде чем ждать, в случае конфликта; и часто блокировка может быть получена после вращения без необходимости блокировки (именно намерение вращения). В этом случае, поскольку блока нет, инструмент не может знать, что произошло вращение (очень короткий конфликт).

Надеюсь, что это ответ на ваш вопрос.

person X.J    schedule 10.10.2013
comment
Нет, я говорю не о «Визуализаторе», а о параметре «Данные о конфликте ресурсов (параллелизм)» в «Мастере производительности» в меню Analyze. Тем временем я также попробую Visualizer. - person Ajay; 11.10.2013