serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/2장/2.48 / 40

2.4 · 프로세스와 동시성

코루틴은 함수와 무엇이 다를까?

함수가 중간에서 멈췄다가 그 자리에서 다시 시작할 수 있을까요?

일반 함수는 반환하면 호출 상태를 끝내지만 코루틴은 실행 위치와 지역 변수를 보관한 채 양보할 수 있습니다.

먼저 생활 비유

게임의 저장 지점

게임을 종료하지 않고 저장 지점에서 멈춘 뒤 나중에 같은 체력과 위치로 돌아오는 것과 비슷합니다.

컴퓨터 예제로 바꾸기

두 번 값을 내보내는 함수

yield "a";
yield "b";

첫 yield에서 호출자에게 돌아가고 다음 호출에는 처음이 아니라 그 다음 줄부터 이어집니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

호출

코루틴의 첫 줄에서 실행을 시작합니다.

실행권과 상태실행 · CPU 차례대기 · 메모리 · 운영 체제호출단계 1yield단계 2다른 일단계 3resume단계 4완료단계 5실행권현재: 호출

이 그림에서 기억할 한 문장

코루틴은 스레드가 아니라, 한 스레드 안에서 실행 위치를 저장하고 협력적으로 교대하는 단위입니다.

현재 상태

이동하는 것
실행권
현재 위치
호출
다음 위치
yield

30초 확인 문제

코루틴이 yield한 뒤 보존해야 하는 것은?

처음 보는 용어 두 개

yield
현재 실행 상태를 보존하고 제어권을 양보하는 동작
resume
보존한 지점에서 실행을 이어가는 동작

이 절을 다 읽었다면

코루틴은 스레드가 아니라, 한 스레드 안에서 실행 위치를 저장하고 협력적으로 교대하는 단위입니다.

← 이전 절

2.3 스레드 안전 코드는 어떻게 만들까?

다음 절 →

2.5 콜백 함수는 왜 필요할까?