
일단 스레드의 메모리 구조를 찾아보면

이런 식으로 생겼다.
여기서 프로세스 내에서 각각 Stack만 할당 받고 Code, Data, Heap 영역은 공유된다.
코루틴에 대해서 알고 있는 부분은 코루틴은 실행을 위해 있으며 단순한 객체의 느낌이다.
실제 사용에서도 asyncio 라이브러리의 create_task()를 통하여 생성하며, 해당 내부에 여러가지 비동기 함수를 넣을 수 있다.
이런 식의 여러 코루틴 객체를 만들고 서로 일시 중단 지점 등을 활용하여 실행 가능하다.
따라서 여러 개의 코루틴도 하나의 스레드 내에서 사용 가능하다.
따라서 이를 생성 및 관리할 때에도 스레드의 경우는 운영체제에 시스템 호출이 필요하며, 커널 수준의 리소스가 할당된다.
하지만 코루틴은 단순 객체와 유사하며, 운영체제 리소스를 사용하지 않는다.
스위칭 비용 또한 코루틴은 운영체제의 개입 없이 실행 지점과 로컬 변수 상태만 heap 메모리에 저장하고 사용하게 된다.
| [매일메일] 템플릿 메서드 패턴이란 무엇인가요? (0) | 2025.08.20 |
|---|---|
| [매일메일] NoSQL 데이터베이스의 유형에는 어떤 것들이 있나요? (0) | 2025.08.20 |
| [매일메일] PRG 패턴에 대해서 설명해 주세요 (1) | 2025.07.29 |
| [매일메일] 멀티 쓰레딩에 대해서 설명해주세요 (0) | 2025.07.28 |
| [매일메일] 낙관적 락과 비관적 락에 대해 설명해 주세요. (0) | 2025.07.24 |