pthread_create недостаточно места

Я использую Pthreads с MinGW на Windows. Вызов pthread_create возвращает ошибку, которая переводится как "Недостаточно места". К какому пространству это относится? Является ли пространство стека потока?

int scannerThreadReturnValue = pthread_create(&parserThreadHandle, &attr, parserThread, (void *)filename);
    if(scannerThreadReturnValue != 0) {
        printf("Unable to create thread %s\n", strerror(errno));
    }
    else printf("Parser thread creation successfull\n");

2 ответа

Решение

Сообщение об ошибке наиболее вероятно неверно, так как pthread_* семейство функций не устанавливает errno, Код ошибки возвращается функциями.

Так что мод вы код, как это:

int scannerThreadReturnValue = pthread_create(&parserThreadHandle, &attr, parserThread, (void*)filename);
if (scannerThreadReturnValue != 0)
{
  printf("Unable to create thread: %s\n", strerror(scannerThreadReturnValue));
}
else 
{
  printf("Parser thread creation successful.\n");
}

Это даст вам правильное сообщение об ошибке.

Это странно, хотя я не уверен насчет MinGW, да, это должно касаться размера стека. Что это за приложение? Вы создали много тем до этого parserThread?, В идеальном случае не должно выходить из строя в космическом вопросе.

Вероятно, вы можете инициировать атрибут потока и попытаться установить размер стека перед созданием потока. Таким образом, мы можем сузить легко.

Другие вопросы по тегам