본문 바로가기

프로그래밍/알고리즘

(2)
대량의 데이터 처리를 위한 프로세싱 모델 서버 개발자들이 한번쯤 고민하게 되는 모델이다. 그런데, 이 모델의 고민은 IOCP기반의 개발자 보다는 UNIX기반 개발자들이 더 많은 고민을 하게 되는 모델이기도 하다. 나는 가끔 윈도우 기반으로 개발하는 것은 참으로 축복이라고 생각한다. 많은 개발자 들이 MS를 욕하지만, 내가 보기에는 MS가 개발자들의 고민을 아주 많이 해소해 주는 존재 임은 분명해 보인다. 그럼 이제 옆의 구조의 의미를 말해보자. LINUX에서는 대량의 데이터 통신을 위해 Edge Triggered기반의 epoll을 제공하고 있다. 그런데, epoll이 IOCP처럼 많은 것을 해주지는 못한다. 그러다 보니, 그 만큼 많은 처리가 개발자의 몫이 된다. 개발자 라면 이런 고민을 할것이다. "클라이언트의 연결이 많은 상태에서 어떻게 데..
Coroutine Windows기반의 개발자라면 Fiber라고 이해하면 된다. 개발의 난이도가 증가하면서 여러 개의 진입점이 있는 함수의 필요성을 느끼게 된다. (간략히 말하자면 내가 제어 할 수 있는 Thread를 원하게 된다.) 그러나 일반적인 Thread는 개발자가 직접제어 하기에는 한계가 있다. 물론, 불가능 하다는 것은 아니다. 실제로 Thread를 개발자가 직접 제어하려는 순간 개발자의 의도와 상관없이 이미 제어권은 다른 곳으로 넘어가 버린다. 이러한 프로그램을 원하는 개발자를 위해 Coroutine을 제안한다. 나는 가끔 Windows 개발자는 축복받은 개발자가 아닌가 생각 한다. UNIX(Linux) 개발자는 대부분 직접 만들거나 인터넷을 뒤져서 찾아야 한다. 그러나, Windows 기반으로 개발을 하다 보..