OS 커널의 task 순환을 main routine 이라고 볼때,

Application 의 callback 함수가 sub-routine 이 되는거고 ( 다른 process 로 isolation 되어있지만 )

Application 의 실행코드가( 독립 process 가 ) co-routine 처럼 동작하는 것이지.


C++ 에 도입되는 ( boost 에 구현된 ) co-routine 이 그 구조를

OS 레벨에서 Application 내부 레벨에 가지고 온 것 뿐이고 말야.

그래서 co-routine 도 process 도 고유의 stack 을 확보해야만 가능한 부분이고,

process 는 이미 life-cycle상 정적인 stack 을 확보하고 있으니 말야.


즉, 진입 위치가 다양한 context switching 구조의 일부일 뿐이다.

side effect 를 유발하기 딱 좋긴한데,

re-entrance 회피 구조를 사용한다든지, 중첩해서 사용하지 않는다든지 하는 적당한 요령하에는

OS 입장에서는 권장할( relaxed ) 처리 흐름일 뿐인 것이지. ( 경쟁상태에서 preemption 구조가 갖고 있는 문제가 많잖아 )