int ft_usleep(size_t milliseconds)
{
size_t start;
start = get_time();
while ((get_time() - start) < milliseconds)
usleep(500);
return (0);
}
ft_usleep 함수와 usleep 함수의 주요 차이점은 다음과 같습니다:
- 시간 단위:
- 구현 방식:
- 정밀도:
- CPU 사용:
- 인터럽트 처리:
ft_usleep 함수는 더 정확한 타이밍 제어와 인터럽트 처리를 위해 구현된 사용자 정의 함수로, usleep 함수의 한계를 보완하고 있습니다.
- 루프 조건: (get_time() - start) < milliseconds
- 현재 시간과 시작 시간의 차이가 지정된 밀리초보다 작은 동안 계속 실행됩니다.
- 루프 내부 동작: usleep(500)
- 500마이크로초(0.5밀리초) 동안 스레드를 일시 중지합니다.
이 구현의 목적:
- 정확성: 단순히 usleep(milliseconds * 1000)을 사용하는 것보다 더 정확한 타이밍을 제공합니다1.
- CPU 사용 최적화: 지속적으로 시간을 확인하면서도, 짧은 간격으로 스레드를 중지하여 CPU 사용을 줄입니다.
- 인터럽트 대응: 시스템 인터럽트로 인한 지연을 보정할 수 있습니다. 루프가 계속 실행되므로 정확한 시간을 유지할 수 있습니다.
이 방식은 시스템 타이머의 해상도 한계를 극복하고, 더 정밀한 시간 제어를 가능하게 합니다1.
'C Language' 카테고리의 다른 글
thread create 함수 설명 (0) | 2025.03.15 |
---|---|
포크락 수정 (0) | 2025.03.15 |
철학자의 포크 할당 로직 설명 (0) | 2025.03.14 |
공유 뮤텍스를 사용하는 이유와 예시 (0) | 2025.03.14 |
mutex 입금문제 (2) | 2025.03.13 |