【发布时间】:2014-12-29 05:58:04
【问题描述】:
我正在尝试编辑此代码以使用 ints 参数:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>
void* worker (void* param) {
int* nr = (int *) param;
printf ("I got: %d\n",nr);
}
int main (int argc, int *argv[])
{
pthread_t th;
int i;
for(i=1;i<argc;i++){
pthread_create (&th, NULL, worker,(void*)argv[i]);
pthread_join (th, NULL);
}
}
这不起作用,关于指针的smth,我不明白。谁能解释我?我不想使用“atoi”功能。 对于数字 5 和 2,我得到:-1078000975,-1078000973 和警告:
11:3:警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“int *”[-Wformat=] printf ("我得到了: %d\n", nr); ^
【问题讨论】:
-
int nr = *(int *)param -
代码为每个创建的线程覆盖了 'th' 中的值,因此 pthread_join 只会看到最后创建的线程,而不是所有线程