Почему pthread_create () иногда выдает EAGAIN на порт Cygwin? - PullRequest
3 голосов
/ 08 марта 2011

Что это значит, когда pthread_create () возвращает errno 11 (EAGAIN), «Ресурс временно недоступен»?

Я портирую свое приложение на Cygwin, и оно прекрасно работает на Centos 4. Время от времени приложение не может выполнить свой вызов pthread_create (), но в большинстве случаев работает нормально.

Что это значит, что идет не так?

Справочная страница Linux Centos 4 гласит:

   EAGAIN The  system  lacked  the  necessary  resources  to  create  another  thread,  or  the  system-imposed  limit  on  the  total  number of threads in a process
          {PTHREAD_THREADS_MAX} would be exceeded.

Я сомневаюсь, что нажимаю PTHREAD_THREADS_MAX, так как может система Cygwin исчерпать ресурсы для создания другого потока?

1 Ответ

1 голос
/ 08 марта 2011

С Страница руководства pthread_create () :

Функция pthread_create () не будет работать, если:
EAGAIN
Системе не хватает необходимых ресурсовдля создания другого потока, или было бы превышено установленное системой ограничение на общее количество потоков в процессе {PTHREAD_THREADS_MAX}.

Вы можете повторить попытку после освобождения некоторых ресурсов.

...