Được rồi, 7 năm sau tôi có một câu trả lời thuyết phục hơn dựa trên bài viết này của Evan Klitzke.
Thứ nhất, lý do tôi đặt câu hỏi ở vị trí đầu tiên là lợi thế hiệu suất thường được đề cập epollso với poll/ select. Từ epollnày có hiệu quả cao hơn (O (1)) so với poll(O ( N )).
Điều không được biết đến rộng rãi là chỉ có kích hoạt cạnh epoll thực sự là O (1), trong khi mức độ bị rối loạn epoll có cùng tiệm cận với O ( N ). Thật vậy, hương vị kích hoạt cấp độ phải đi qua danh sách các fds được xem mỗi lần nó được gọi để tìm những cái có khả năng vẫn còn nhiều dữ liệu đang chờ xử lý. Sự đa dạng kích hoạt cạnh có thể dựa vào các tín hiệu để đáp ứng với các byte mới xuất hiện trong một fd.
Sẽ rất thú vị khi tìm hiểu, làm thế nào chính xác một chủ đề được nối lại phát hiện ra fd nào đã đánh thức nó, nhưng chắc chắn là dữ liệu này được truyền qua trong lúc thức dậy được kích hoạt.
Rõ ràng, poll/ selectkhông thể sử dụng kích hoạt cạnh epoll vì ngữ nghĩa là khác nhau. Như chúng ta đã thấy, việc thực hiện với kích hoạt cấp độ epoll sẽ không mang lại lợi ích hiệu suất tiệm cận. Và có thể, cũng ảnh hưởng tiêu cực đến nó nếu các yếu tố không đổi hoặc các thuật ngữ không đổi cao (vì chúng dường như dựa trên điểm chuẩn thô mà tôi đã làm và trích dẫn trong một nhận xét khác).
Để biết thêm thông tin, vui lòng đọc Chặn I / O, I / O không chặn và Epoll .