큰 맥락
스레드의 동작방식과 유사.
컨텍스트 전환을 수행할 때 현재 상태를 스냅샷으로 저장해 두고, 나중에 그 스냅샷을 이용해서
저장된 상태를 복원하고 이어서 실행.
컨티뉴에이션은 이 개념을 메서드 수준에서도 사용가능.


- 3-3에서 만약 yield()가 호출되면 Continuation으로 이동(3-4)
- c가 다시 마운트 되면 3-5처럼 스택 프레임이 다시 스레드로 복귀
스택 프레임에서 컨티뉴에이션으로 복사 비용이 크다면?
JVM에서 이를 해결하기 위해 지연 복사 매커니즘 구현됨.
일부만 다시 스레드의 스택 프레임에 복사됨 → 반환 배리어 매커니즘
반환 베리어
함수의 반환 지점에 주입된 작은 코드 조각
- 함수가 반환될 때, 필요한 프레임을 컨티뉴에이션 스택으로부터 복사해 와야하는지 확인.
소켓으로 데이터가 들어오면 누가 가상 스레드를 언파킹하나?
JVM 수준에서 동작하는 읽기 폴러.
- 이벤트 루프
- read(), connect(), accept() 같은 동기 네트워크 연산이 호출됐지만 즉시 완료되지 않았을 때
모니터링
- I/O연산이 완료되면 폴러가 알림을 받음
- 해당 I/O연산 완료를 기다리던 가상 스레드를 언파킹함.
- 파일 디스크립터(fd)와 가상 스레드 사이의 매핑 정보를 유지함
- 어떤 이벤트에 의해(예: 스켓에 데이터 도착) 깨어나면
- 폴러의 이벤트 루프는 매핑 정보에서 파일 디스크립터와 매핑된 가상 스레드 찾음
- 스레드
쓰기도 쓰기 폴러가 동일하게 적용됨.