Как измерить задержку мьютекса, семафора или futex? Я имею в виду задержку между двумя событиями: разблокировать ранее заблокированный мьютекс и блокировку этого мьютекса. Есть два случая: когда все потоки/процессы находятся на одном процессоре (сколько времени потребуется, чтобы перенести поток), и когда первый поток находится на первом CPU, а второй - на втором.Измерение задержки мьютекса или futex
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 к циклов), поэтому я не могу использовать gettimeofday()
или я могу использовать непосредственно счетчик часов процессора (RDTSC)? – osgx