Я читал о счетчиках блокировки и производительности потоков , но до сих пор не понимаю, что на самом деле значат некоторые из них.Я говорю конкретно о Длина очереди и Уровень конкуренции счетчиков и их посекундных аналогов.MSDN говорит, что первый показывает количество потоков, ожидающих блокировки, а второй показывает количество потоков, которые получают блокировку «безуспешно».Я думал, что если поток ожидает блокировки, это означает, что блокировка не была получена, но, очевидно, я ошибаюсь?
Предположим, у меня есть этот пример программы:
static void Main(string[] args)
{
var t1 = new Thread(RunThread1);
var t2 = new Thread(RunThread2);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
static void RunThread1()
{
Thread.Sleep(1000);
// this lock is acquired immediately. What will counters show at this moment?
// probably both will be zero?
lock (m_Lock)
{
Thread.Sleep(10000);
}
}
static void RunThread2()
{
Thread.Sleep(2000);
// this lock has to wait for about 9 seconds. What will counters show?
lock (m_Lock)
{
Thread.Sleep(10000);
}
}
Что будут показывать счетчики при запуске?