我觉得这个问题正好在我面前。我已经将问题的原因缩小到基本上一行。 '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(),则执行正常。我看不出这个问题。
答案 0 :(得分:3)
你必须传递线程入口点。
readThread(&sA)
是函数调用,将首先执行代码...使用&readThread
。
您必须将sA
作为第4个参数传递。要么不通过i
要么将这两者放在一个结构中。
实际上,你的代码根本不应该编译,或者我误解了一些东西。请提供完整的,最小代码,以重现问题。