# continuation

5개의 포스트

[kotlin] coroutine 동작 과정 - CPS

Coroutine 일반적으로 코루틴을 사용해본 사람이라면, 보통은 Kotlin 과 함께 사용했을 것이다. 그런데, 코루틴은 Co+routine 의 조합으로 Kotlin만의 기능이 아니다. 실제로 코루틴은 아래 사진과 같이, 여러 언어에서 지원하고 있다. 보통 Kotlin에서 Coroutine을 사용할 때는 suspend 키워드를 사용하고, 람다를 통해 마법같이 뚝딱! 만들어내지만, 99.9% 호환되는 Java에서도 suspend와 같은 키워드는 지원되지 않는다. Coroutine은 어떻게 동작되길래 Java로 변환된 코드에서도 정상적으로 동작되는지 그 원리를 확인해보자. CPS (Continuation Pa

2023년 5월 5일
·
0개의 댓글
·
post-thumbnail

Swift Concurrency: Behind the scenes Part. 01

앞에서는 새롭게 나온 개념들을 어떻게 사용하는지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계했는지, 실제로는 어떻게 동작하는지 알아보자. Threading Model New feed reader 앱을 만든다고 생각해보자. 고수준에서 어떠한 것들이 필요할지 생각해보자. User Interface를 처리할 main thread가 있다. User가 구독한 news feed를 추적할 Database도 있다. 마지막으로 feed로 부터 최신 content를 받아올 네트워크 처리단이 있다. Grand Central Dispatch User가 새로운 news feed를 가져오라는 gesture를 했다고 생각해보자. GCD를 사용했을 때는 다음과 같이 처리했었다. ![](htt

2022년 6월 29일
·
0개의 댓글
·
post-thumbnail

AsyncStream

AsyncSequence를 공부하다 후반에 나온 AsyncStream을 이해하지 못해 문서를 읽어본다. AsyncStream 이전 글에서 AsyncSequence를 Custom하게 만드는 방법까지 알아보았다. 하지만 Apple에서는 기존 로직을 converting하는데 있어 다른 방법을 제안하는데, 그녀석이 AsyncStream이다. 일단 우리가 이전에 알아본 AsyncStream을 준수하고 있다는 것을 확인할 수 있다. 그렇다면, 이 친구는 AsyncSequence를 만들어주면서 다른 추가적인 method가 들어간 녀석이 아닐까? 맞다. Example 이해하기 위해 Zedd님의 예시 코드를 가져왔습니다. 이렇게 하면 AsyncStream을 만들 수 있다. 이전에 비해 상대적으로 쉽게 AsyncStream을 만들 수 있다. 그런데 내부적으로 동작하는 방식을 모르겠다. AsyncStream.init 일단 AsyncStream의 생성자가 이상

2022년 6월 22일
·
0개의 댓글
·
post-thumbnail

Continuation

안녕하세요~!!! 한달을 거의 꽉 채워서 포스트를 올리네요.. 헤헤.. 🥰 이번 포스트는 동아리 인원과 함께 스터디 하고있는 주제인 Concurrency !! 그중에서도 Continuation에 대해 알아보겠습니다!! 함께해주세요-! 기존의 Apple 플랫폼에서의 asynchronous programming은 두가지 패턴이 존재합니다. Completion Callback과 Delegate Pattern입니다. Completion Callback Completion CallBack은 메소드가 completion colsure를 가지고있고, 결과를 받게되면 해당 내용을 실행합니다. 이때, 결과를 받을때까지 다른 코드들이 실행 될 수 있습니다.

2022년 5월 21일
·
0개의 댓글
·

callback, cps, call/cc 그리고 monad

call/cc 너무 어렵다. 😩 JavaScript와 비동기 JavaScript에서 비동기를 다루는 방법중 하나는 callback을 사용한 방식이다. 어떤 함수가 와 같은 시그니쳐를 가지고 있을때, 비동기 함수 f는 자신의 작업이 완료되면 인자로 전달받은 cb함수를 호출하게 된다. cb함수를 보통 callback이라고 부르기도 하지만 continuation이라고도 부른다. 이에 대한 자세한 의미는 '더 읽어보기'를 참고하자. continuation을 전달하는 형태의 프로그래밍을 continuation-passing style(cps)이라고 부르며, 이것은 비동기에서 뿐만 아니라 분기, 예외, 성공과 실패등 프로그램의 흐름을 제어하는 전반적인 부분에 사용할 수 있다. cps의 일반적인 의미 위에서 설명한 f함수의 cb인자를 "나중에 호출되는 함수(callback)"라고 설명 할 수도 있지만 "반환값을 전달 받는 함수"라고 설명하면 이해하기가 더 쉽다고 생각한다. 이

2020년 5월 13일
·
0개의 댓글
·