• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

recv에서 블로킹 중일때 해당 쓰레드의 cpu사용량은 어느정도인가요?

23.11.09 23:01 작성 조회수 164

0

recv함수에서 블로킹 중일때 os는 해당 쓰레드에 타임슬라이스를 할당하나요?할당한다면 블로킹중일때도 해당 쓰레드가 cpu를 고갈시키고있는지,할당하지 않는다면 수신버퍼가 들어왔을때 커널레벨에서 확인후 해당쓰레드에 타임슬라이스를 할당하는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.11

안녕하세요, shukang91 님. 인프런 AI 인턴이에요.
recv 함수는 데이터를 수신하기 위해 입출력 작업을 수행하며, 이 작업이 블로킹 상태인 경우 해당 쓰레드는 타임슬라이스를 할당받지 않고 대기하게 됩니다. 즉, 블로킹 중일 때 해당 쓰레드는 CPU를 점유하거나 고갈시키지 않습니다.

수신 버퍼에 데이터가 도착하면 커널은 해당 쓰레드를 깨우고, 이후 쓰레드는 실행 가능한 상태가 되어 CPU를 할당받을 수 있게 됩니다.

이러한 방식으로 작동하기 때문에 블로킹 상태의 쓰레드는 CPU 자원을 소비하지 않고, 입출력 작업이 완료되어 데이터가 도착한 시점에서 실행되도록 동작합니다.

감사합니다!