Я хочу проанализировать, как определенный мьютекс распределяется по времени между двумя потоками. Я пытаюсь отладить проблему, когда я чувствую, что один из потоков блокируется / разблокируется очень быстро, что может приводить к тому, что другой поток не сможет получить эту блокировку.
Подробности:
Поток T1:
while (1) {
//...non-blocking trivial work
lock();
//do little work on a shared DS1
unlock();
//...blocking work
}
Поток T2:
run() {
//...does a bunch of blocking work
lock();
// update shared DS1
unlock();
return;
}
Поток T1 - это поток диспетчера, очень часто проверяющий, обновлен ли общий DS1. Поток T2 выполняет намного больше работы и, наконец, обновляет общий DS1.
Я чувствую, что T1 значительно блокирует блокировку, в то время как T2 не может получить блокировку достаточно быстро.
Я хочу измерить, наскольковремя, когда конкретный поток удерживает эту блокировку. Сколько времени тратит Т2 на борьбу за блокировку.