LINUX.ORG.RU

прерывание на accept


0

0

Добрый день

Есть программы с примерно такой структурой (упрощенно):

bind()
pool = create_thread_pool()
while (slaveSocket = accept())
    pool.serve(slaveSocket)

Нужно уметь прервать главный цикл. Все осложняется тем что bind/accept
и прочие это не просто bsd сокеты, а всякие wrapper'ы из gSOAP (т.е. 
soap_accept и т.д.). Из чего-то по теме нашел только soap_poll().

Соотв. вопрос:

Насколько неправильным является решение:

bind()
set_accept_timeout(3s)
pool = create_thread_pool()
while (slaveSocket = accept())
    if not_valid(slaveSocket) and should_stop
        return
    pool.serve(slaveSocket)

Если оно является неправильным, то почему? Какие наихудщие вещи могут 
происходить в этом случае? Как может выглядеть альтернатива?

Про soap ничего не знаю, но думаю, что если сказать твоему пулу потоков, что пора умирать + закрыть только что accept'нутый сокет, ничего страшного произойти не должно..

brumal
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.