Как я могу измерить задержку мьютекса, семафора или фьютекса? Я имею в виду задержку между двумя событиями: разблокировать ранее заблокированный мьютекс и блокировку этого мьютекса. Существует два случая: когда все потоки / процессы находятся на одном и том же процессоре (сколько времени потребуется для перепланирования потока) и когда первый поток находится на первом процессоре, а второй - на втором.
Thread1: Lock(Mutex) Critical1 Unlock(Mutex)|<------->|
Thread2: while{trylock} |Lock(Mutex) Critical2 Unlock(Mutex)|
Или даже
Thread1: work..work..very hard..work... sem_post()|<----->|
Thread2: sem_wait(semaphore)...............................|sem_wait unlocks here work2..
Это время очень короткое (~ 1 k циклов), поэтому я не могу использовать gettimeofday()