Многопоточный HTTP-сервер с libevent

Я пытаюсь сделать простой HTTP-сервер с libevent и сумел сделать это на основе примеров документации. Однако без нитей вся цель libevent — мусор. Я не очень разбираюсь с потоками в C ++ 11, но мне хотелось бы знать, как правильно реализовать такой сервер.

Я нашел этот пример онлайн: https://gist.github.com/kzk/665437

Это правильно? Является ли pthreads правильным выбором? Также эта строка очень странная:

for (int i = 0; i < nthreads; i++) {
pthread_join(ths[i], NULL);
}

Что там происходит?

0

Решение

Я пока не могу рекомендовать libevhtp из-за серьезная ошибка, но вы можете посмотреть, как они используют потоки: https://github.com/ellzey/libevhtp/blob/master/examples/thread_design.c
— Они создают отдельные экземпляры libevent, по одному для каждого потока. Тогда весь асинхронный код будет работать без лишних блокировок и т. Д., Если вы будете осторожны в использовании одной и той же базы libevent в потоке. IMO — это лучший подход к освобождению роликов для типичного веб-сервера.

Что касается https://gist.github.com/kzk/665437, Потоки c ++ 11 не должны быть хуже, чем pthreads.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]