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()함수를 더 이상 받은 메시지가
없을때까지 돌려서 확인해야한다.