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. ; // ➎ // 위 epoll.add에 들어갔던 값을 얻는다. userPtr = event. ; // 수신? 송신? type = event. ; if (type = = ReceiveEvent) { (result, data) = s.recv(); if (data. > 0) { // 수신된 데이터를 처리한다. Process(userPtr, s, data); } } }
➊ 먼저 epoll 객체를 만듭니다.
➋ 여러 소켓을 epoll에 추가합니다. 추가된 소켓의 I/O 가능 이벤트는 epoll로 감지할 수 있습니다. 소켓을 추가할 때는 여러분이 정의한 소켓 소유자 객체 등 원하는 아무 값을 같이 넣을 수 있습니다.