Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ContinuationInterceptor #2

Open
daehwan2da opened this issue Mar 1, 2023 · 0 comments
Open

ContinuationInterceptor #2

daehwan2da opened this issue Mar 1, 2023 · 0 comments

Comments

@daehwan2da
Copy link
Owner

daehwan2da commented Mar 1, 2023

Coroutine 의 형상 정보 및 context 자료구조에 대한 정보를 CoroutineContext 에서 관리한다면, suspend 키워드에 의해 일시 중단되며 연속적으로 수행되어지는 정보는 ContinuationInterceptor 에 의해 관리되어진다.

CPS

Continuation Passing Style 은 호출되는 함수에 Continuation 을 전달하고, 각 함수의 작업이 완료되는 대로 전달 받은 Continuation 을 호출하여 동시적인 동작을 수행한다.

  • Continuation 을 Callback 처럼 동작

Suspension points to Label

suspend keyword 를 kotlin compiler 가 Continuation 을 파라미터로 받는 fun 으로 변경하고, 내부 suspension points 를 기준으로 code block 들이 구분되어진다.

  • kotlin 은 모든 suspension point 들을 찾아 label 기반의 when 절로 변환시킨다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant