본문 바로가기
개발/간단하게...

코루틴(coroutine)에서 suspend, resume의 역할? 개념?

by lonewhitedot 2023. 2. 17.
반응형

먼저 간단히 얘기하면 a기능 b기능이 각각 메인스레드 및 io스레드를 사용한다고 해보자. 예전에는 메인스레드 부분을 하나로 짜고 리스너 뭐 이런식으로 a,b의 아이오스레드쪽을 따로 처리했다면, 코루틴은 그냥 a기능으로 함수 하나, b기능으로 함수 하나 만들어서 중간에 io스레드 갈일 있으면 서스펜드해놓기만 하면, 코루틴이 알아서 두 함수를 왔다리 갔다리 해준다는 거임

개념적으로 설명하면,
코루틴에서 suspend와 resume은 코루틴의 일시 중지와 재개를 제어하는 메커니즘이야

suspend는 코루틴을 일시 중지 시키고, 코루틴이 일시 중지되면 다른 코루틴이 실행되는거지. suspend 키워드는 일반적으로 I/O 또는 시간이 오래 걸리는 작업을 수행하는 함수에서 사용되지. 즉 화면 열심히 그리다가 io스레드 실행시키고 서스펜드 시켜버리는 거야. 그럼 알아서 다른 메인 스레드에서 필요한 애가 돌게 되는거지.

suspend와 resume을 함께 사용하여 코루틴은 비동기적인 작업을 수행하면서도 블로킹하지 않고, 효율적으로 CPU 자원을 활용할 수 있게하고, 쓰는 우리가 스레드간 왔다리 갔다리 어케하지 고민 안하고 그냥 쭈욱 코드 작성할 수 있게 해주는거지.

다음에 시간되면 그림으로 정리해야지.

반응형

'개발 > 간단하게...' 카테고리의 다른 글

Gradle이 뭐야?  (0) 2023.02.18
코루틴 간단 개념  (0) 2023.02.17
app visibility, getPackageInfo 실패할때  (0) 2023.02.17
dagger 개념  (0) 2023.02.16
의존성 주입 개념  (0) 2023.02.16

댓글