쓰레드, 경량쓰레드(코루틴, 파이버)
크게 보면 이렇게 2가지로 나뉘는거 같은데
코루틴 파이버 이거는 비스무리한놈이고 쓰레드는 따로 이렇게 볼 수 있는거 같은데
코루틴, 파이버 이놈들이 비슷하면서 ㅈㄴ 애매하게 다르던데
대충 주요특징 보면 파이버는 비선점형 스케줄링 뭐 협력적 멀티태스킹 등등으로 제어권 한 새끼가 꽉쥐고 있지만
쓰레드랑은 다르게 사용자 수준에서 언제 제어권을 뱉어내고 먹고 등등 제어권을 조정가능하다 이정도인거 같은데
코루틴은 단순 제어흐름이고
이거만 보면 경량쓰레드라는 닉값에 가장 어울리는건 파이버인거 같다
공통점 : 사용자수준에서 제어 가능하다
차이점 : 스케줄링을 사용자가 하냐 안하냐 차이
정도인거 같은데 맞나
난 공부할 때 코루틴이랑 파이버 차이가 사용자가 명시적으로 흐름 제어를 하는지의 유무라고 생각했음 코루틴은 개발자가 흐름제어만 명시적으로 작성하는거지 어떤 스레드를 선택해서 작업하는건 아니니까 코루틴도 결국 내부에 스케줄러가 돌아감 경량 스레드의 개념 자체는 사용자 수준 스레드와 커널 수준 스레드가 M:N 매핑하는 하이브리드 모델이라 어디랑 가깝다 멀다랑 관련 없는 것 같음
코루틴이든 파이버든 스레드 아래서 돌아갈텐데 코루틴은 파이버랑 다른점이 있다면 그나마 선택하고 싶은걸 선택할 수 있는 구조인거 같던데 둘다 비슷해가지고 차이가 애매함
나도 이론적으로는 둘의 큰 차이를 잘 모르겠음. 가상 스레드 공부할 때 해외 기업 기술 블로그도 많이 살펴봤는데 딱히 구별 안해두더라. 그래서 코드적으로 따지면 님 말대로 코루틴이 구조적 동시성에 특화된게 아닐까 생각함 근데 가상 스레드는 파이버에 속하던데, 자바는 구조적 동시성쪽으로 업데이트하고 있으니 이것도 분리해서 봐야하는 것 같고 어렵다