4

如何测量互斥量、信号量或 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()

4

1 回答 1

3

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

于 2011-06-13T16:20:57.537 回答