같은 기능을 하는 쓰레드를 4개 정도 돌리고 있습니다.
문제는 쓰레드 내에 while(1) {}로 묶여 있으면서 시간체크를 하며 장시간 동안 응답이 없으면 while문을 이탈하도록 한 부분이 있는데 한개의 쓰레드를 운용할 때는 시간이 정확하게 맞아 들어가는데
복수개의 쓰레드가 운용 되면서는 시간을 정확하게 잡아 내질 못합니다.
그래서 while(1){}에 sleep(0) 혹은 nanosleep을 넣어었는데 넣기 점보다는 규칙적으로 시간 체크가 가능하긴 한데 오차가 많이 생기는 군요.
스코프로 sleep(0)일 때의 시간을 체크해 보면 최대 10msec 이상의 시간을 먹습니다.

가장 이상적인 경우는 sleep(0)이면 시간 점유를 하지 않고 다른 쓰레드로 제어권이 넘어가는 것인데 실제 sleep(0)으로는 이런한 효과를 기대하기 어렵겠더군요.

이런 경우 usleep(0)대신에 사용할 만한 함수가 없을까요?


그리고 지정한 시간 만큼 쓰레드를 잠들게 하기 위해서 usleep()을 사용했지만 약 10msec  정도의 시간을 입력하면 usleep(0)처럼 동작을 하는데 이와 같은 경우 지정한 시간 만큼(우선 1msec 정도의 시간)을 정확히 잠들게 하는 함수가 없을까요?