2010-06-03 14 views
5
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 

Tôi hơi bối rối về tham số maxevents. Giả sử tôi muốn viết một máy chủ có thể xử lý tới 10k kết nối. Tôi có thể xác định số tiền tối đa tối đa là 10000 sau đó hay thấp hơn vì một số lý do?epoll_wait: maxevents

Trả lời

9

Giá trị tối đa chỉ là độ dài của mảng struct epoll_events được trỏ đến bởi *events.

Nếu hạt nhân có nhiều hơn số sự kiện đó để nạp cho chương trình của bạn tại thời điểm đó, nó sẽ không phải vì bạn không mong đợi nhiều sự kiện được trả về trong _wait cụ thể đó.

Có thể bạn sẽ cần phải thử nghiệm với kích thước tối ưu này cho chương trình của bạn. Kích thước tối ưu thậm chí có thể khác nhau theo kiến ​​trúc. Đối với số lượng nhỏ các mô tả tệp được thăm dò, bạn có thể dễ dàng chỉ đặt maxevents cho số tệp (và kích thước mảng events tương ứng), nhưng khả năng tất cả các tệp cần chú ý cùng một lúc là thấp, vì vậy bạn có thể để sử dụng giá trị maxevents thấp hơn.