Inflearn brand logo image
Inflearn brand logo image
채널톡 아이콘

인프런 커뮤니티 질문&답변

비가싫어요님의 프로필 이미지

작성한 질문수 82

코틀린 코루틴 완전 정복

코루틴 취소 확인 시점

delay 함수 사용 시 스레드 양보

해결된 질문

작성

·

28

1

스레드를 양보하며 일시 중단하는 방식은 yield 함수라고 이해를 했는데, delay 함수도 스레드를 양보하며 일시 중단을 하는 것인가요?

그러면 delay 와 yield 의 차이점은 "지연된 만큼 기다렸다가 재개가 되냐" vs "지연 없이 바로 재개되냐" 일까요?

답변 2

1

조세영님의 프로필 이미지
조세영
지식공유자

비가싫어요님 안녕하세요. 지식공유자 조세영입니다.

네 맞습니다. delay는 일시중단 이후 일정 시간 이후에 재개되고 yield는 스레드 양보 후 지연 없이 재개 요청됩니다.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 비가싫어요님.

코틀린 코루틴에서 delay 함수와 yield 함수는 모두 코루틴의 일시 중단을 처리하지만, 사용 의도와 동작이 조금 다릅니다.

delay 함수의 역할

  • 일시 중단 및 대기: delay 함수는 코루틴을 일정 시간 동안 일시 중단시킵니다. 이 시간 동안 스레드를 점유하지 않으며, 다른 코루틴이 실행될 수 있게 스레드를 양보합니다.
  • 지정된 시간 후 재개: delay 함수는 설정된 시간만큼 기다린 후에야 코루틴이 다시 실행됩니다. 이 기능은 비동기적으로 시간을 기다리게 하며, UI 응답성을 유지하거나 비동기적 타이머 작업 등에 유용합니다.

yield 함수의 역할

  • 즉시 양보 및 재개: yield 함수는 현재 실행 중인 코루틴이 현재 스레드를 즉시 양보하도록 합니다. 코루틴의 스케줄링을 다시 잡아 현재 스레드가 비어 있는 경우 즉시 재개될 수 있습니다.
  • 스레드의 즉시 양보: 이는 CPU 자원의 적절한 분배를 돕고, 다른 코루틴에게 실행 기회를 주기 위한 중요한 도구입니다.

따라서, delayyield의 차이점은 설명하신 대로 “얼마나 기다렸다가 재개되느냐” 입니다. delay는 특정 시간동안의 지연이 있고, yield는 지연 없이 스케줄러가 관리하는 범위 내에서 바로 재개될 수 있습니다.

관련 내용에 대한 원본 설명은 코틀린 공식 문서의 코루틴 가이드를 참고하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.