Встречается на собеседованиях • сегодня

Зачем нужен системный вызов EPOLL

epoll — это механизм в Linux для эффективного мониторинга множества файловых дескрипторов (например, сокетов). Он позволяет приложениям обрабатывать тысячи соединений с минимальными накладными расходами по сравнению с select или poll.

Преимущества:

  • Масштабируемость: работает за O(1) при большом числе дескрипторов.
  • Поддержка edge-triggered (ET) и level-triggered (LT) режимов.
  • Не требует перебора всех дескрипторов при каждом вызове.

Пример:

python
import select
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 8080))
server.listen(10)

epoll = select.epoll()
epoll.register(server.fileno(), select.EPOLLIN)  # Регистрируем серверный сокет

while True:
    events = epoll.poll(1)  # Ждём события
    for fd, event in events:
        if fd == server.fileno():
            client, _ = server.accept()
            epoll.register(client.fileno(), select.EPOLLIN)
        elif event & select.EPOLLIN:
            data = client.recv(1024)
            if not data:
                epoll.unregister(fd)
                client.close()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы