본문 바로가기

카테고리 없음

poll방식과 event 방식의 비교(lasModified vs WatchService)

, lastModified는 그 자체로는 감지를 하기는 어렵고, polling해서 변경 사항을 알려주는 기능을 추가로 작성해야 비슷한 형태로 사용할 수 있긴 

 

interrupt 기반 코드와 event driven 코드 모두 코드를 실행하기 전에 기다려야 한다는 점에서 동일.. 

 

poll: 이벤트가 실제로 존재하든 그렇지 않든, event query 하기를 기다림. 

 

 

event:  interrupt 기반 코드라고도 불리며, polling 을 위한 lower 한 level 을 위미한다ㅏ. interrupt 의 경우에는 cpu 가 매 클럭마다 interrupr lline 을 poll 한다. 

 

event 방식은 poll 방식에 비해 유저가 아니라 cpu 에 의한 polling 방식이라고 생각하면 된다. 

 

WatchService 의 코드를 보면, 

1.  파일 시스템을 위한 WatchService Watcher 를 만든다. 

2. 감시하고 싶은 폴ㄷ더를 선택하고 Watcher 에 등록한다. ( 또한 등록한 디렉토리에 대한 WatchKey 를 받아온다)

3. 주어진 이벤트를 기다리기 위해 무한 루프를 구현한다. 이벤트가 발생하면, WatchKey 는 신호를 받고 Watcher 의 큐에 추가 된다. 

4. Watcher queue 로부터 키를 받으면, 그 키로부터 파일이름을 받을 수 있다. 

5. 키에 대한 각 멈춤이벤트를 받아온다. 

6.. 키를 reset, 하고 이벤트 다시 기다림.

7. 서비스 닫음.

 

 

polling 은 하나의 값을 읽거나 쓰는 방법으로. 읽어들여지는 시간 차이는 운영체제맏다 다르며 deterministic 한방식이락고 할 수 없다.

 

event 방식은 dma  혹은 interrupt deriven 방식이라고도 하는데,, ㅊ