Я изучаю мультипоточное программирование и программирование сетевых приложений с помощью библиотек Boost.Thread и Boost.Asio
Написал небольшой сервер и тестирующий клиент к нему такой, что для обработки очередного подключения клиента
сервер создает отдельный поток. Столкнулся со следующей проблемой: после приблизительно пятисот успешных
циклов создания потока для подключившегося клиента и его завершения по окончании обработки запроса серверу
не удается создавать потоки более: вызывается исключение
terminate called after throwing an instance of
'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector
<boost::thread_resource_error> >
what(): boost thread: failed in pthread_create: Resource temporarily unavailable
При этом при текущих значениях констант сервером не может быть создано более 10
потоков одновременно, а пользователь, от имени которого запускаются сервер и клиент,
не имеет никаких ограничений на число процессов или дескрипторов. Ни потоки, ни память в ходе работы не «текут» —
все корректно завершается и освобождается, корректно закрываются сокеты.
Более полное описание проблемы и исходные кода (а также статически слинкованные бинарники под linux x86-32)
см. здесь
Как это побороть? Заранее спасибо.