测量互斥或互斥延迟

时间:2010-03-26 15:33:49

标签: mutex semaphore latency futex

我如何测量互斥量,信号量或互斥量的延迟?我的意思是两个事件之间的延迟:解锁以前锁定的互斥锁和锁定该互斥锁。有两种情况:当所有线程/进程在同一个CPU上时(重新调度线程需要多长时间)以及第一个线程在第一个CPU上,第二个线程在第二个CPU上时。

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()

1 个答案:

答案 0 :(得分:3)

您可以使用高分辨率计时器。 clock_gettime与CLOCK_MONOTONIC_HR (我知道这已经超过一年了,但仍有人可能有同样的问题)