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로 감지할 수 있습니다. 소켓을 추가할 때는 여러분이 정의한 소켓 소유자 객체 등 원하는 아무 값을 같이 넣을 수 있습니다.

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