分段错误(核心转储)

时间:2013-08-14 14:36:10

标签: loops segmentation-fault pthreads

我觉得这个问题正好在我面前。我已经将问题的原因缩小到基本上一行。 'pthread_create'是问题出现的地方。以下是我的代码。

someStruct sA
pthread_t rT[10];

int i = 0;
while(i < 10) {
    if(pthread_create(&rT[i], 0, readThread(&sA), &i) != 0) {
        // Error creating child thread
        perror("Cannot create reader thread");
        exit(EXIT_FAILURE);
    }
    i++; 
}

我在这里缺少一些令人眼花缭乱的明显事物吗?我无法发现任何对我而言的事情。如果我在尝试创建单个readerThread [0]时运行pthread_create(),则执行正常。我看不出这个问题。

1 个答案:

答案 0 :(得分:3)

你必须传递线程入口点。

readThread(&sA)是函数调用,将首先执行代码...使用&readThread

您必须将sA作为第4个参数传递。要么不通过i要么将这两者放在一个结构中。

实际上,你的代码根本不应该编译,或者我误解了一些东西。请提供完整的最小代码,以重现问题。