nginx 의 epoll 네트워크 I / O 모델 이 왜 빠 른 지 설명 합 니 다.
2463 단어 네트워크 프로 그래 밍
생활 속 의 예 로 해석 하 다.
만약 에 네가 대학 에서 공부한다 고 가정 하면 한 친구 가 방문 하 기 를 기 다 려 야 한다. 이 친 구 는 네가 A 호 건물 에 있 는 것 만 알 고 있 지만 네가 구체 적 으로 어디 에 사 는 지 모 르 기 때문에 너희들 은 A 호 건물 입구 에서 만 나 기로 약속 했다.
만약 에 네가 사용 하 는 차단 IO 모델 로 이 문 제 를 처리한다 면 너 는 A 호 건물 입구 에서 친구 가 오 기 를 기다 릴 수 밖 에 없다. 그 동안 너 는 다른 일 을 할 수 없다. 이런 방식 의 효율 이 낮 다 는 것 을 알 기 어렵 지 않다.
이제 시대 가 바 뀌 었 습 니 다. 다 중 재 활용 IO 모델 로 이 문 제 를 처리 하기 시 작 했 습 니 다. 친구 에 게 A 호 건물 에 와 서 아 줌 마 를 찾 아 어떻게 가 야 하 는 지 알려 달라 고 했 습 니 다. 여기 건물 관리 아 줌 마 는 다 중 재 활용 IO 역할 을 맡 았 습 니 다.
select 와 epoll 모델 의 차 이 를 한층 더 설명 합 니 다.
select 판 아 줌 마 가 하 는 일 은 다음 과 같다. 예 를 들 어 동창 갑 의 친구 가 왔 다. select 판 아 줌 마 는 멍청 하 다. 그녀 는 친 구 를 데 리 고 방 마다 누가 동창 갑 인지, 네가 기다 리 는 친구 가 왔 다. 그래서 실제 코드 에서 select 판 아 줌 마 가 하 는 일 은 다음 과 같다.
int n = select(&readset,NULL,NULL,100);
for (int i = 0; n > 0; ++i)
{
if (FD_ISSET(fdarray[i], &readset))
{
do_something(fdarray[i]);
--n;
}
}
epoll 판 아 줌 마 가 먼저 들 어 갔 습 니 다. 그녀 는 동창 갑 의 정 보 를 적 었 습 니 다. 예 를 들 어 그의 방 번 호 를 적 었 습 니 다. 그러면 동창 갑 의 친구 가 올 때 이 친구 의 동창 갑 이 어느 방 에 있 는 지 알려 주면 됩 니 다. 자신 이 직접 사람 을 데 리 고 빌딩 에 가득 찬 사람 을 찾 지 않 아 도 됩 니 다. 그래서 epoll 판 아 줌 마 가 하 는 일 은 다음 과 같은 코드 로 표시 할 수 있 습 니 다.
n=epoll_wait(epfd,events,20,500);
for(i=0;i
epoll 에서 관건 적 인 데이터 구조 epoll이벤트 정 의 는 다음 과 같 습 니 다.
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
struct epoll_event {
__uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
};
보 입 니 다. epolldata 는 유 니 온 구조 체 로 epoll 판 아 줌 마 가 친구 들 의 정 보 를 저장 하 는 구조 체 입 니 다. fd, 지침 등 여러 가지 유형의 정 보 를 저장 할 수 있 습 니 다. 이 구조 체 가 있 으 면 epoll 아 줌 마 는 먼지 를 불 지 않 아 도 친구 갑 에 위치 할 수 있 습 니 다. 이런 효율 적 인 향상 을 얕 보지 마 세 요. 대규모 동시 다발 서버 에서윤 문 IO 는 가장 시간 이 걸 리 는 작업 중 하나 이다. 다시 그 예 로 돌아 가면 친구 건물 관리 아 줌 마 가 올 때마다 전 층 의 조회 학생 을 찾 아야 한다 면 처리 효율 이 떨 어 질 것 이다. 얼마 지나 지 않 아 건물 밑 에 많은 사람들 이 있 을 것 이다.
최초 로 제 시 된 차단 IO 의 처리 모델 에 비해 다 중 재 활용 IO 를 사용 한 후에 프로그램 은 자신 이 IO 조작 을 제외 한 작업 을 자 유 롭 게 진행 할 수 있 고 IO 상태 가 변화 할 때 다 중 재 활용 IO 에 의 해 통 지 를 한 다음 에 해당 하 는 조작 을 할 수 있 으 며 IO 상태 가 변 하 기 를 기다 리 는 것 을 계속 막 지 않 아 도 된다.
위의 분석 을 통 해 알 수 있 듯 이 epoll 은 select 보다 높 아 지 는 것 은 실제 적 으로 공간 으로 시간 을 바 꾸 는 사상의 구체 적 인 응용 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 네트워크 프로 그래 밍 -> 상용 모듈스 트림 소켓 을 만 들 고 지정 한 IP 주소 의 지정 한 포트 번호 에 연결 합 니 다. 이 소켓 의 입력 흐름 을 되 돌려 줍 니 다. 이 소켓 의 출력 흐름 을 되 돌려 줍 니 다. 이 IP 주소 의 호스트 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.