inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2시간으로 끝내는 코루틴

3강. 코루틴 빌더와 Job

delay 함수에 대해 질문이 있습니다

해결된 질문

392

째꾸뇽

작성한 질문수 7

1

강의 듣던 와중 delay에 대한 궁금증이 생겨서 질문드립니다.
만약 한 코루틴에서 delay로 시간을 전부 보낸 후에는 작업 중인 다른 코루틴에게서 제어권을 뺏어오게 되나요?

아래와 같은 예시에서

fun main(): Unit = runBlocking {
  val job1 = launch {
    delay(100)
    printWithThread("Job 1")
  }

  val job2 = launch {
    // 대충 0.1초보다 더 걸리는 로직
  }
}

위와 같은 상황에서는

  1. job1에서 delay로 0.1초 기다림과 동시에 job2에게 넘겨줌

  2. job2 실행중

  3. job1에서 기다리기로 약속한 0.1초 지남

  4. 하지만 job2 아직 실행중

이 상황에서는 job2의 로직이 전부 끝난 후에 job1에게 제어권을 넘겨주게 되는 걸까요?

kotlin coroutine

답변 1

1

최태현

안녕하세요 응애님!! 좋은 질문 감사드립니다! 😊

 

네네 맞습니다.

  • 코루틴 자체가, 서로 협력하는 관계에서 내가 "양보"를 해주어야만 다른 코루틴이 실행될 수 있기 때문에

  • 말씀해주신 상황에서 여전히 job2가 실행중이고, 그 안에 "양보"를 해주는 코드가 없다면

0.1초가 지났음에도 job1은 기다리다가 job2 로직이 전부 끝난 이후에 실행됩니다.

 

또 궁금한 점 있으시면 편하게 질문 남겨주세요~~!

감사합니다!! 🙏

0

째꾸뇽

아아 정확하게 이해됐습니다. 명시적으로 양보하는 로직이 없으면 코루틴을 전부 완료한 다음 제어권이 넘어가는 것이군요. 감사합니다~

Dispatchers 별 차이점 관련 질문

0

91

1

코루틴과 가상 스레드의 차이가 궁금합니다.

1

307

2

Coroutine과 ThreadLocal관련 질문

0

152

2

선생님 강의를 듣고 크롤링에 코루틴을 적용해보고 있습니다. 그런데 코루틴이 하나만 나와서 동시처리가 안되는데 혹시 봐주실 수 있나요??

1

114

1

7강에 대해서 궁금증이 있는데요

1

116

2

Spring MVC에서 corountine 활용 방안

1

538

1

9강 코루틴 중단과 재개관련 문의 드립니다.

0

124

2

suspend 함수에 관해 추가적인 질문 있습니다! (runcatching, Result)

0

126

1

간단 질문.. join() vs delay()

0

157

2

코루틴을 잘 사용하고 있는지 궁금합니다.

0

196

1

CoroutineScope & Dispatcher 질문

0

160

2

async await 관련 질문

1

135

2

코루틴 실행 순서 궁금합니다.

1

231

2

corutine task에 대한 질문

1

195

2

completing의 존재의의가 궁금합니다.

1

161

1

코루틴 dispatcher IO관련 질문

0

187

1

Job 질문이 있습니다

1

203

1

스프링 MVC 환경에서의 코루틴

1

2093

1

자식1, 2와 부모코루틴의 관계

1

225

1

한 suspend fun 의 반환값이 다른 suspend fun의 파라미터로 쓰일 때

1

329

2

runBlocking을 사용하는 경우가 있을까요?

0

399

1

delay가 없으면 실행 안 되는 이유

0

294

1

코루틴 스코프

0

312

1

CoroutineScope 와 withContext 의 차이를 잘 모르겠습니다.

1

699

1