Пришёл запрос. Вызывается MHD_AccessHandlerCallback. В документации пишут, что этот callback должен вызвать MHD функции для того чтобы ответить клиенту.
А если мы ответ читаем из файла, то придется ждать окончания операции чтения. А в это время могут приходить другие запросы. Это плохо.
Проверил экспериментально: если в MHD_AccessHandlerCallback не отвечать, а сохранить connection и начать не блокируемую операцию чтения из файла, то, дождавшись (epoll-ом или select-ом) её окончания (в другом потоке, конечно), можно ответить в сохранённый connection. В этом потоке можно ждать окончания нескольких операций чтения из файла. И для каждой отвечать в соответствующей ей connection.
Но при этом, каждую секунду будет вызываться MHD_AccessHandlerCallback для тех запросов на которые мы ждём окончания операций чтения.
Можно как-нибуть (в libmicrohttpd) отвечать не сразу (не в MHD_AccessHandlerCallback)?
Игнорирование обрабатываемых запросов (в MHD_AccessHandlerCallback) и использования отдельного потока для каждого запроса не предлагать. Можно предлагать альтернативные библиотеки (но только на чистом C).
![](/img/p.gif)
Ответ на:
комментарий
от anymouse
![](/photos/33631:-2142683424.gif)
![](/img/p.gif)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Quiz для профф. Pay attention, please. (2023)
- Форум [kernel] generic_make_request - не срабатывает callback (2012)
- Форум Реализация очередей и не только (2016)
- Форум Libcurl использование multi_socket режима (2021)
- Форум Загадка с SIGPIPE/Unix_exception (EPIPE) в OCaml. (2006)
- Форум Отложенное освобождение памяти (2016)
- Форум Отложенная доставка писем (2012)
- Форум Стратегия отложенной записи (2020)
- Форум Отложенный запуск сервисов (2020)
- Форум Cups + отложенная печать (2009)