본문 바로가기

반응형

코루틴

(4)
[C#] 비동기 프로그래밍 - 코루틴(coroutine) 기반 비동기 서버 이번 포스트에서는 node.js와 같은 싱글 스레드 기반 비동기 서버(? 정확하게는 싱글 스레드는 아니지만..이건 다음에 설명하자) 프레임워크를 C# 프로그래밍 언어를 이용해 만드는 방법에 대해 살펴 보도록하겠다. 추가하여 콜백을 사용하지 않고도 비동기 작업을 처리 할 수 있는 부분도 함께 살펴 본다. 들어가며 일반적으로 네트워크 프로그래밍을 하게 되면(특히 서버) 대용량 트래픽을 처리하기 위해 비동기 핸들링을 선호하게 된다. 예를 들어 IO를 처리 할 때 메시지를 보내고 응답을 받을 때 까지 블로킹 되는 시간을 줄이기 위해 비동기를 많이 사용한다. 비동기 IO는 성능상으로는 확실히 이점을 가질 수 있지만, 비동기 작업이 완료 되었을 때 운영체제로 부터 작업 완료 통보를 받을 수 있는 별도의 콜백 함수를..
[Python] 비동기 함수 - asyncio 이번 포스트는 파이썬 기초 강의의 마지막 장으로써 비동기 함수의 개념과 활용 방법에 대해 설명 한다. 비동기 함수는 프로그램의 성능 향상을 위해서는 필수적인 기능이고 마지막 답게 다소 어려운 내용이므로 집중해서 읽도록 하자. 비동기 함수의 개념 본론을 시작하기 전에 우리는 먼저 비동기 함수의 개념에 대해 이해해야 한다. 일반적으로 함수를 호출하게 되면 함수의 처음 부터 진행하다 함수의 끝에 다다르거나 도중에 return문을 만나게 되면 함수는 종료되고, 제어권은 다시 호출자에게 되돌아 간다. 이 경우 호출자는 자신이 호출한 함수가 종료하고 리턴 할 때까지 기다리고, 함수가 리턴 했다는 것은 호출 된 함수의 실행이 완료 되었다는 것을 보장한다. import time def foo() : print('hel..
[C++20] 코루틴(Coroutine) - co_return 코루틴을 종료하기 위해선 co_return을 호출한다. Task foo() { co_return; } co_return은 값을 리턴 할 수도 있고, 아무런 값도 리턴하지 않고 단순히 코루틴을 종료하기만 할수도 있다. 값을 리턴하느냐 그렇지 않느냐에 따라 코루틴 함수의 리턴 타입이 가져야 하는 요구사항이 달라진다. 코루틴의 리턴 타입에 어떠한 것들이 필요한지 아래 예제를 통해 알아 보도록 한다. 컴파일러는 co_return 키워드를 만나면 아래와 비슷한 코드를 생성한다. Task foo() { promise.return_void(); co_await promise.final_suspend(); } 컴파일러는 co_return 대신에 promise와 co_await를 생성한다. foo() 함수는 아무것도 리..
[Unity] Coroutine 코루틴(Coroutine) 이해하기 http://unityindepth.tistory.com/21 https://en.wikipedia.org/wiki/Coroutine

반응형