0

我在 Windows 上将 Pthreads 与 MinGW 一起使用。对 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");
4

2 回答 2

1

错误消息很可能是错误的,因为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");
}

这将为您提供正确的错误消息。

于 2013-05-17T10:43:15.860 回答
0

这很奇怪,虽然我不确定 MinGW,是的,它应该指的是堆栈大小。这是一个什么样的应用程序?你在这个 parserThread 之前创建了很多线程吗?. 在理想情况下,不应在空间问题上失败。

可能您可以启动线程属性,并尝试在创建线程之前设置堆栈大小。所以我们可以很容易地缩小范围。

于 2013-05-17T10:04:33.793 回答