pthread_cond_timedwait에서 ms단위의 wating 법.

muzie의 이미지

pthread_cond_timedwait 사용시에

초단위 미만으로 쉴때에 정상적으로 대기하지 않습니다.

평균적으로 10ms만 대기하고 나와버립니다.
ret값은 0이 아닌 값으로 signal을 받고 나오는게 아닌 타임오버로 나오는데 뭔가 잘못했는지요?

timespec의 설정값은 tv_sec는 gettimeofday 현재값으로부터 + 0,
tv_nsec는 현재 gettimeofday 현재값으로부터 tv_usec * 1000 (ns 단위이므로) 으로 줬습니다.

뭔가 놓친것이 있는지요?
답변 기다리겠습니다.

muzie의 이미지

아이고... 삽질했네요. 자답합니다 -_-;
혹시나 저와 같은 실수를 하실분이 있을지도 모르니 적어둡니다.

timespec의 tv_sec 에는 timeval의 tv_sec 값을 넣어주고
timespec의 tv_nsec 에는 timeval의 tv_usec에 * 1000을 하고
예를들어 1000ms를 쉬고 싶다면 + 1000 * 1000 을 해야하는데 1000만 하고 앉았었군요 --;;;;