【发布时间】:2014-11-06 23:06:11
【问题描述】:
我的程序需要创建一些线程,但我被困在 pthread_join,因为它总是进入错误情况,因为返回(安全)是 3,而不是 0,我认为这是正确的数字以防万一一切顺利。
编辑:为了更好地解释我自己,错误是代码正在进入错误处理区域,而它不应该进入,这意味着我收到“错误等待:成功”消息。
int main() {
pthread_t tids[NUM_THREADS];
int a, i, resultado, safe ;
char *f ;
f = (char *)malloc(sizeof(SIZEFICHEIRO));
a = randomnum(4);
f = pickfile(a, f);
for ( i=0; i<NUM_THREADS ; i++ )
{
safe = pthread_create( &tids[i] , NULL , (void *)verificador , (void *) f) ;
if ( safe != 0 )
perror ("Error creating threads");
}
for ( i=0; i<NUM_THREADS ; i++ )
{
safe = pthread_join( tids[i], (void **)&resultado ) ;
if ( safe != 0 ) // Error here
perror ("Error waiting");
printf("Result(0:Works ; -1:error) = %d\n", resultado);
}
}
【问题讨论】:
-
您正在打印的
error是什么?它不会出现在您的代码中的其他任何地方。代码究竟输出了什么?您是否看到“错误等待”? -
它说:“错误等待:成功”,这意味着它正在进入错误处理区域,而它不应该这样做。
标签: c multithreading pthread-join