Изменение лимита максимального количества pthreads приложением - PullRequest
12 голосов
/ 22 декабря 2009

Можно ли каким-либо образом изменить ограничение на количество потоков, которые может создать процесс? В настоящее время в моей системе Linux я могу создать около 380 потоков, но я хочу увеличить это, если память доступна.

Ответы [ 4 ]

6 голосов
/ 15 апреля 2011

уменьшить размер стека пользователя 'ulimit -s 1024';

default: 8MB 
reduced: 1MB 

для увеличения количества потоков.

установить размер стека: pthread_attr_setstacksize(1024)

3 голосов
/ 05 марта 2012
cat /proc/sys/kernel/threads-max

может работать в Linux, но не в других системах UNIX. Я думал, что правильный путь это

Максимальное количество потоков на процесс - sysconf (_SC_THREAD_THREADS_MAX) завершается с ошибкой

, который работает в некоторых системах UNIX (например, HPUX), но не в Solaris или Linux ...

3 голосов
/ 27 января 2010

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

1 голос
/ 22 декабря 2009

Посмотрите на это:

Максимальное количество потоков на процесс в Linux?

И взгляните на это, поскольку оно может относиться к вашему вопросу:

Обслуживание одного клиента с каждым потоком сервера

...