Многопоточность и сокетное мультиплексирование (пул)

Я пишу серверную программу на C для академических целей.

Сервер запускает фиксированное число рабочих потоков во время инициализации, после чего потоки начинают ожидать "список запросов".

После этого сервер запускает бесконечный цикл, в котором он должен выполнить следующие две вещи:

  • Проверьте наличие новых подключений
  • Проверить на возможное read() на подключенных клиентах (только через select/poll, а не epoll) и удалите все читаемые файловые дескрипторы из набора (fd_set в случае, который мы использовали select() или же struct pollfd* в случае мы использовали опрос) и поместили его в список, где ожидают потоки.

Таким образом, рабочие потоки будут извлекать запросы из списка и обслуживать их. Каждый запрос требует неопределенной последовательности read() а также write() вызов.

Все, что я хотел бы понять, если существует потокобезопасный способ добавления и удаления файлового дескриптора из fd_set или struct pollfd*,

0 ответов

Другие вопросы по тегам