IT/IT ::Linux

level trigger, edge trigger

골든 2013. 8. 12. 15:42

Level Trigger (LT) 

epoll_wait()의 블록킹이 풀리는 순간 한개의 메시지만 받고 다시 epoll_wait()로 보내어도 

아직 큐(TCP/IP를 이야기하는거다.) 에 메시지가 남아있다면 다시 트리거가 작동해 

epoll_wait()의 블록킹이 풀릴 수 있다. 



Edge Trigger(ET) 

epoll_wait()의 블록킹이 풀리는 순간 한개의 메시지만 받고 다시 epoll_wait()로 보내면 

클라이언트가 메시지를 보낼때까지 epoll_wait()에서 블록킹된다. 만약 클라이언트가 

새로운 메시지를 보낸다면 이전에 큐에 있던 메시지만 가져온다. 

이 문제를 해결하려면 블록킹이 풀렸을때 recv()함수를 더 이상 받은 메시지가 

없을때까지 돌려서 확인해야한다.