2012-03-08 2 views
1

전화를 걸면 기대되는 통화 시간은 얼마나됩니까? 1 초를 초과하지 않는 임의의 시간입니까? 적어도 1 초 이상 임의의 시간입니까?수면 예상 시간 (1)

시나리오 :

  • 현상 제 a는 출력 장치의 순서로 몇 가지 단계를 수행하는 코드를 기록한다. 코드가 발송되고 A가 떠납니다.

  • 개발자 B는 j 단계와 k 단계 사이에 1 초 간격이 필요하다는 분야에서 조언을받습니다. 그래서 그는 그 단계들 사이에 sleep(1)에 전화를 겁니다. 코드가 배송되고 개발자 B가 떠납니다.

  • 개발자 C는 sleep(1)이 충분히 오래 잠자기해야하는지, 아니면 1000 밀리 초 이상 지연되는지 확인하기 위해 고해상도 방법을 사용해야하는지 궁금해합니다.

답변

2

sleep()에만 프로세스가 지정된 시간의 최소 금액 잠 것을 보장 당신이 그것을 넣어 그래서 "적어도 1 초 어떤 임의의 시간입니다."

유사 거동은 man pagenanosleep 대한 언급된다 :()

nanosleep를 경과 *의 REQ에 지정된 시간까지 중 적어도 호출 스레드의 실행을 중단

this question의 답변도 유용 할 수 있습니다.

unsigned int sleep(unsigned int seconds); 

DESCRIPTION 
    sleep() makes the calling thread sleep until seconds seconds have 
    elapsed or a signal arrives which is not ignored. 
... 
RETURN VALUE 
    Zero if the requested time has elapsed, or the number of seconds left 
    to sleep, if the call was interrupted by a signal handler. 

그래서 만큼 당신이 그것을 이야기로, 스레드 잠을하게하지만, 신호를 각성 :

2

내 남자 페이지는이 말한다. 나는 더 이상의 보장을 볼 수 없다.

더 나은 대기 시간이 필요하면 잠을 잘 못 자면됩니다. 나노 슬립 (사운드 재밌지 만 사실이야) 선택은 내가 아는 바로 잠깐 잠수 할 수있는 유일한 posix 휴대용 방식입니다.

+0

따라서 반환 값이 0이면 "더 이상"묵을 시간이 없다는 것을 의미합니다. 그러나 신호가 절전 모드를 종료하고 스레드가 949 밀리 초 동안 잠 들어 있었다면 1이나 0을 반환 할 것입니까? –

+1

차이점은이 질문과 관련이 없지만 "호출 스레드를 잠자기 상태로 만듭니다"(설명서) 및 "프로세스를 잠자기 상태로 만듭니다"(해석은) 동일한 내용이 아닙니다. – hvd

+0

@hvd, 당신 말이 맞아요. 감사. –