개발&Development/프로그래밍 일반

Event Driven과 Multi-Threading

겐도 2006. 10. 31. 03:04
Why Events Are A Bad Idea
Prefer Multithreading to Event-driven in Highly-Concurrent Servers
from http://lastmind.net/

간만에 좀 어려운 글좀 읽었더니 살포시 머리에 쥐가 오네요.

Event-Driven(ED)과 Multi-Thread(MT) 기법은 서로 연관이 많습니다. 이것을 OS나 어플리케이션 서버가 구동시켜 주기 위해서는 결국 세마포어(Semaphore)라던가 블라블라들의 기능들을 요구합니다. 이동네가 그렇듯 ED는 MT로 구현할 수도 있고 반대로도 가능합니다. 현재 개발해야 하는 환경이 일단은 한쪽을 더 잘 지원한다면 그쪽으로 손이 가게 마련입니다. 그리고 위의 두 글에서 보듯 처음에는 ED로 구현하는 것이 더 유리하였으나 이제는 리눅스 커널도 많이 보강되었고 최신의 CPU나 플랫폼 아키텍쳐에선 충분히 두개를 동일 선상에 두고 논의할 수 있을 것입니다.

사족.
대형 어플리케이션에서 모든 것을 MT나 ED 만으로 구현하기는 어려울 것입니다. 두개는 배타적인 것이 아니라 상호 보완적인 존재일테니까요. 같은 문제를 두개 모두로 각각 풀 수 있겠지만 적절한 방법을 취해야 할 것입니다. 그리고 어플리케이션 단위의 복잡한 문제라면 문제에 따라 선택은 달라질 수 있을 것입니다.

MT가 전형적인 Procedure 형태의 코딩을 주로하는 코더에게는 편할 것입니다. 하지만 몇 케이스는 ED로 작성하는 것이 좀더 아름다울수(!) 있을 것입니다. 독립 인풋을 처리함에는 ED가 훨씬 깔끔한 구조를 만들어 주니까요. 물론 어렵습니다. Event라는 것은 C의 포인터 만큼이나 다루기 까다로운 존재니까요. 또한 Event 끼리의 의존성이 생기는 순간 머리에 쥐가 날 정도의 모델링 하기 힘들기도 합니다. 그래도 예술작품을 만들었을때의 쾌감이란.. :)

'개발&Development > 프로그래밍 일반' 카테고리의 다른 글

개발자라는 용어  (0) 2007.05.17
A급 인재  (3) 2007.02.07
재개발  (1) 2006.10.30
기획자 vs. 개발자  (4) 2006.10.30
Quality Assurance  (1) 2006.10.30