더북(TheBook)

epoll은 리눅스와 안드로이드에서만 사용 가능합니다. iOS, MacOS, FreeBSD에서는 epoll과 매우 유사한 kqueue를 사용하면 됩니다. 예시 코드와 함께 사용법을 알아봅시다.

epoll = new epoll();             // ➊
foreach(s in sockets)
{
  epoll.add(s, GetUserPtr(s)); // ➋
}
 
events = epoll.wait(100ms);      // ➌
 
foreach(event in events)         // ➍
{
  s = event.socket;            // ➎
  // 위 epoll.add에 들어갔던 값을 얻는다.
  userPtr = event.userPtr;
  // 수신? 송신?
  type = event.type;
  if (type = = ReceiveEvent)
  {
      (result, data) = s.recv();
      if (data.length > 0)
      {
          // 수신된 데이터를 처리한다.
          Process(userPtr, s, data);
      }
  }
}

먼저 epoll 객체를 만듭니다.

여러 소켓을 epoll에 추가합니다. 추가된 소켓의 I/O 가능 이벤트는 epoll로 감지할 수 있습니다. 소켓을 추가할 때는 여러분이 정의한 소켓 소유자 객체 등 원하는 아무 값을 같이 넣을 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.