-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
해결됨
delay 함수에 대해 질문이 있습니다
24.04.05 01:44 작성 조회수 99
1
강의 듣던 와중 delay에 대한 궁금증이 생겨서 질문드립니다.
만약 한 코루틴에서 delay로 시간을 전부 보낸 후에는 작업 중인 다른 코루틴에게서 제어권을 뺏어오게 되나요?
아래와 같은 예시에서
fun main(): Unit = runBlocking {
val job1 = launch {
delay(100)
printWithThread("Job 1")
}
val job2 = launch {
// 대충 0.1초보다 더 걸리는 로직
}
}
위와 같은 상황에서는
job1에서 delay로 0.1초 기다림과 동시에 job2에게 넘겨줌
job2 실행중
job1에서 기다리기로 약속한 0.1초 지남
하지만 job2 아직 실행중
이 상황에서는 job2의 로직이 전부 끝난 후에 job1에게 제어권을 넘겨주게 되는 걸까요?
답변을 작성해보세요.
1
최태현
지식공유자2024.04.05
안녕하세요 응애님!! 좋은 질문 감사드립니다! 😊
네네 맞습니다.
코루틴 자체가, 서로 협력하는 관계에서 내가 "양보"를 해주어야만 다른 코루틴이 실행될 수 있기 때문에
말씀해주신 상황에서 여전히 job2가 실행중이고, 그 안에 "양보"를 해주는 코드가 없다면
0.1초가 지났음에도 job1은 기다리다가 job2 로직이 전부 끝난 이후에 실행됩니다.
또 궁금한 점 있으시면 편하게 질문 남겨주세요~~!
감사합니다!! 🙏
답변 1