Страница man AIX для pthread_create описывает следующие причины ошибки EAGAIN pthread_create:
EAGAIN
If WLM is running, the limit on the number of threads in the class is reached.
EAGAIN
The limit on the number of threads per process has been reached.
Я вижу это в тестовом коде, который запускает 300 потоков.Любопытно, что я могу создать тестовую программу с количеством потоков до 2400 (хотя мне нужно уменьшить размер стека по умолчанию, чтобы избежать ENOMEM), и я, кажется, не сталкиваюсь ни с каким видом потоков на ограничение процесса, ни ограничение WLM.
Поскольку это не тот лимит потоков AIX, на который я нахожусь, я задаюсь вопросом о других источниках EAGAIN для AIX или о том, как WLM настроен для конкретного процесса.Наш продукт имеет поддержку WLM, и мне интересно, если этот тестовый код случайно настраивается как часть класса WLM, и каков механизм для этого?
Обновление:
ЭтоПохоже, что EAGAIN, который я получаю, является недокументированным условием ошибки pthread_create, а не WLM, поскольку я вижу:
# wlmcntrl -q
1495-054 WLM is stopped
Я также обнаружил, что команду ps можно использовать для запроса, с каким классом WLM связан процесс.с, как в
# ps -m -o THREAD,class -p 1040410
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND CLASS
peeterj 1040410 2318428 - A 1 60 3 f1000602d5c19bb0 200801 pts/19 - /vbs/engn/sqo/t Unclassified
...
, который снова исключает WLM как источник EAGAIN.