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?, В идеальном случае не должно выходить из строя в космическом вопросе.
Вероятно, вы можете инициировать атрибут потока и попытаться установить размер стека перед созданием потока. Таким образом, мы можем сузить легко.