태그 보관물: Proactor

리액터(Reactor) VS 프로액터(Proactor)

리액터(Reactor)는 소켓이나 파일에서 이벤트가 발생하면, 동기(Sync) I/O를 수행할 수 있는 상태를 체크하고, 이벤트에 맞는 핸들러를 호출해서 이벤트를 처리하는 방식이다. 만약, 서버소켓으로 새로운 커넥션 요청이 들어오면, 리액터는 내부 스레드로 새로운 커넥션을 처리하는
핸들러(Acceptor)를 호출해서 커넥션을 처리한다.

프로액터(Proactor)는 하나 이상의 비동기 I/O를 초기화하거나 작업이 완료되서 발생한 이벤트를 처리하는 핸들러를 등록해서 처리한다. 프로액터가 비동기 I/O를 사용하는 경우, 유저 스레드가 I/O 작업을 직접 수행하지 않기에, 동시성 문제에 있어서 많은 이점을 누릴 수 있어서 성능을 향상시킬 수 있다.

Comparing Two High-Performance I/O Design Patterns

Reactor 패턴과 Proactor 패턴에 대한 비교 자료입니다.
위의 패턴들은 더글라스 슈미츠 박사의 ACE 프레임웍에서 구현을 하였고, 패턴으로 승화가 되었죠.. ^^

아래 내용에서 TProactor 패턴에 대한 얘기가 나오고 있습니다.
소스를 까보면 Leader/Followers 패턴도 적용이 되어 있네요..
결국 기본적으로 IO에 대한 멀티플랙스 + 효율적인 처리를 위한 쓰레드 적용을 통해서 성능을 높이는 것이 TProactor 패턴으로 느껴집니다.

한번씩 읽어보세요.. ^^
 
http://www.artima.com/articles/io_design_patternsP.html