2010-03-26 4 views
4

뮤텍스, 세마포 또는 퓨 텍스의 대기 시간을 어떻게 측정 할 수 있습니까? 두 이벤트 사이의 대기 시간을 의미합니다. 이전에 잠긴 뮤텍스를 잠금 해제하고 뮤텍스를 잠그는 것입니다. 다음과 같은 두 가지 경우가 있습니다. 모든 스레드/프로세스가 동일한 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()

답변

3

당신은 고해상도 타이머를 사용할 수 있습니다 사용할 수 없습니다. clock_gettime with CLOCK_MONOTONIC_HR (이 질문은 1 년 이상이지만 여전히 동일한 질문이있을 수 있음)

+0

또는 직접 CPU 클럭 카운터 (RDTSC)를 사용할 수 있습니까? – osgx