4
如何測量互斥量,信號量或futex的延遲?我的意思是兩個事件之間的延遲:解鎖先前鎖定的互斥鎖和互斥鎖。有兩種情況:所有線程/進程在同一個CPU上時(重新調度線程需要多長時間)以及第一個線程在第一個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 k個圈),所以我不能用gettimeofday()
或我可以直接使用CPU時鐘計數器(RDTSC)? – osgx 2011-06-24 16:18:10