Профильная конкуренция потока .NET

Есть ли любой инструмент, доступный для профилирования конкуренции.Net Thread. Я добавил счетчик производительности для потоков для окна Service, который отстает. Это показывает приблизительно 150 конкуренций потока. Я хотел бы представить, какая область кода ответственна за большую часть конкуренций Потока. Есть ли любой инструмент, доступный, который может указать на меня в правильные блоки кода.

6
задан Amitabh 8 February 2010 в 15:57
поделиться

3 ответа

libghttp довольно легкий.

Я не уверен, будет ли он компилирован чисто на win32, хотя.

-121--3612730-

IIRC это расширение помогает: http://www.opengl.org/registry/specs/SGI/video_sync.txt , но оно очень плохо поддерживается текущими драйверами.

-121--4501507-

Не профилировщик, но windbg с расширением sosex.dll может сказать вам, какие взаимоблокировки у вас есть. Найдите его здесь и прочитайте о команде! dlk.

0
ответ дан 17 December 2019 в 07:04
поделиться

Я столкнулся с той же проблемой с проектом Visual Studio 2008, поэтому мне не удалось использовать профилировщик конфликтов потоков VS2010. Вместо этого я написал диагностический класс TimedMonitor , который отслеживает время, затрачиваемое на ожидание блокировок.

Чтобы использовать его, вы должны заменить:

object myLock = new object();
lock (myLock) { /* do work */ }

на:

TimedMonitor timedLock = new TimedMonitor();
using (timedLock.Lock()) { /* do work */ }
Console.WriteLine("Lock was entered {0} times; total wait time: {1}.",
  timedLock.EnterCount, timedLock.WaitTime);

Если вы используете только небольшое количество простых блокировок (например, с помощью Monitor.Enter или ключевого слова lock), заменив их на TimedMonitor и ведя журнал выходные данные могут помочь определить, какая блокировка вызывает наибольшее время ожидания. Однако, если вы используете более сложные управляемые блокировки (например, ReaderWriterLock) или собственную синхронизацию (например, ManualResetEvent), это не поможет, поскольку не отслеживает их.

2
ответ дан 17 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: