2026/01/07 2

[코틀린 코루틴] 구조적 동시성

코루틴 컨텍스트이전 글에서 Dispatcher를 설정할 때, 이부분에 대해 의구심이 생길 수 있다.우린 분명 launch 의 인자로 Dispatcher를 넘겼는데, launch의 파라미터는 context를 받고 있다.이 컨텍스트는 뭐고, 왜 Dispatcher를 넘겨도 동작할까? 사실 우리가 넘긴 디스패처는 기존 코루틴 컨텍스트에 덮어씌워지는 역할을 수행한다. 코루틴 컨텍스트에는 다양한 정보들이 들어있다.코루틴 디스패처코루틴 생명주기Job 객체코루틴 객체 이름코루틴 ExceptionHandler그리고, 다음과 같이 파라미터로 넘긴 Context로 덮어씌우는게 가능하다.실제로 다음과 같이 코루틴 컨텍스트가 바뀐 것을 확인할 수 있다.구조적 동시성지금까지 코루틴 컨텍스트를 왜 알아봤냐 하면, 구조적 동시성을..

[코틀린 코루틴] 코틀린의 동시성 모델 - 코루틴

코틀린은 동시성 모델로 쓰레드 활용이 아닌, 코루틴을 권장한다.코틀린 코루틴 vs 전통적 스레드코틀린에서는 concurrent.thread 함수를 이용하면, 새 스레드를 간편하게 시작할 수 있다.하지만 이는 커널 스레드를 직접 만드는 형태이기 때문에 비용이 많이 든다.스레드는 계층 개념이 없기 때문에, 계층적 관리를 하기 까다롭다.스레드는 어떤 작업이 완료되길 기다리는 동안에는 블록된다.최신 시스템이라도 한번에 몇 천개의 스레드만 효과적으로 관리할 수 있다.기본적으로 스레드는 굉장히 무거운 자원이다.요청 1개를 처리하는 동안 스레드 1개를 할당하는 구조에서,DB 호출/외부 HTTP/파일 I/O 등으로 스레드가 블로킹되면 그 스레드는 그 시간 동안 유용한 일을 못 하면서도 계속 점유된다.동시 요청이 늘면 ..