관리 메뉴

HAMA 블로그

Vert.x 의 Thread Pool & 이벤트루프 인사이드 본문

Vert.x

Vert.x 의 Thread Pool & 이벤트루프 인사이드

[하마] 이승현 (wowlsh93@gmail.com) 2015. 5. 19. 11:06

쓰레드풀 

Vert.x 는 세가지 타입의 쓰레드 풀을 가진다.

  1. Acceptor: 보통 Socket 통신에 사용되는 그 accept 쓰레드. 하나의 쓰레드가 하나의 포트에 대하여 생성된다. 

  2. Event Loops :  Run루프와 같은데 CPU 코어개수와 같게 생성. 이벤트가 발생했을때, 상응하는 핸들러가 실행된다. 실행시 수행되어지면 , 이벤트루프는 다른 이벤트를 빠르게 읽는것을 되풀이한다.

  3. Background : 이벤트루프가 핸들러를 실행하거나 추가적인 쓰레드가 요구되어질때 사용된다.
    사용자는 
     vertx.backgroundPoolSize 나 환경설정으로 쓰레드의 갯수를 설정할수있다.디폴트는 20
    너무많은 쓰레드는 컨텍스트스위칭을 발생하므로 조심해야한다. 




이벤트 루프틑 디테일하게 보면  그것은 
Netty NioWorker 를 사용하는데  모든 핸들러들은 이벤트루프

위에 실행하는 Verticles 에 의해 구체화된다. 각각의 Verticles 객체는  그것의 특별한 NioWorker 를 가지고있다.  그래서 Verticle 객체는 항상 특정쓰레드위에서 실행된다는걸 보장한다. 그러므로 Verticles  은 쓰레드 세이프하게 쓰여질수있다. 


http://www.cubrid.org/blog/dev-platform/understanding-vertx-architecture-part-2/

0 Comments
댓글쓰기 폼