programing

epoll의 에지 트리거링 옵션의 용도는 무엇입니까?

coolbiz 2022. 7. 7. 23:44
반응형

epoll의 에지 트리거링 옵션의 용도는 무엇입니까?

epoll의 man 페이지에서:

epoll is a variant of poll(2) that can be used either as an edge-triggered
or a level-triggered interface

에지 트리거 옵션은 언제 사용합니까?man 페이지는 그것을 사용하는 예를 제시하지만, 왜 그것이 필요한지 모르겠다.

FD가 읽기 또는 쓰기 준비가 되면 모든 데이터를 즉시 읽기(또는 쓰기)할 필요는 없습니다.

레벨 트리거 에폴은 FD가 준비되는 한 계속 잔소리를 하지만 엣지 트리거된 에폴은 다음 번이 올 때까지 사용자를 방해하지 않습니다.EAGAIN(따라서 코드화하기가 더 복잡하지만 필요한 작업에 따라 더 효율적일 수 있습니다).

리소스에서 FD로 쓰고 있다고 가정해 보십시오.해당 FD가 쓰기 준비가 되는 데 관심이 있는 경우 레벨 트리거로 등록되면 FD가 아직 쓰기 준비가 되었다는 알림이 계속 표시됩니다.리소스를 아직 사용할 수 없는 경우에는 더 이상 쓸 수 없기 때문에 웨이크업(wake up)이 낭비됩니다.

대신 에지 트리거로 추가할 경우 FD가 한 번 쓰기 준비가 되었다는 알림이 표시되고 다른 리소스가 준비되면 가능한 한 많이 쓰십시오.그럼 만약에write(2)돌아온다EAGAIN쓰기를 중지하고 다음 알림을 기다립니다.

읽고 싶은 것을 할 준비가 되기 전에(따라서 버퍼링해야 하는 등) 모든 데이터를 사용자 공간에 풀링하고 싶지 않을 수 있기 때문에 읽기에도 마찬가지입니다.에지 트리거 epoll을 사용하면 읽을 준비가 되면 이를 기억하고 실제 판독을 "as and time" 수행할 수 있습니다.

제 실험에서 ET는 종종 한 개의 스레드만 웨이크업한다고 보장하지 않습니다.EPOLLONESHOT 플래그는 이 목적을 위한 것입니다.

언급URL : https://stackoverflow.com/questions/9162712/what-is-the-purpose-of-epolls-edge-triggered-option

반응형