Сбой Pthread_create после создания нескольких потоков - PullRequest
3 голосов
/ 01 мая 2011

Я разрабатываю приложение, которое обрабатывает клиентские подключения.Я создаю поток для каждого запроса, так как будут короткие задачи.Тем не менее, у меня продолжает возникать проблема после обработки определенного количества соединений.В частности, после 381 соединения pthread_create не может создать новый поток.Я знаю, что это может привести к сбою, если в приложении не хватает ресурсов или если потоки PTHREAD_THREADS_MAX уже созданы.

Странно то, что первые 381 поток уже остановился, когда произошла эта ошибка.Я не использую pthread_join для ожидания остановки этих потоков, я считаю, что pthreads не требует, чтобы я как-то «останавливал» поток, исправьте меня, если я ошибаюсь (по крайней мере, на man-странице это не упоминается).Я подумал, что, может быть, это может произойти, когда несколько потоков появятся одновременно, однако я протестировал это несколько раз и каждый раз, когда создание 382-го потока завершается неудачей.

Кто-нибудь знает, что может произойти?Любая помощь будет оценена.

Заранее спасибо.

1 Ответ

4 голосов
/ 01 мая 2011

Если вы не вызовете pthread_join или не отсоедините поток (либо вызвав pthread_detach, либо создав его в отключенном состоянии с использованием атрибутов), ресурсы, используемые завершенным потоком, никогда не будут освобождены. Это твоя проблема. Если вам не нужно присоединяться к темам, отсоедините их, как только вы их создадите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...