【发布时间】:2013-08-26 23:47:04
【问题描述】:
我有以下代码:
for(i = 0 ; i < max_thread; i++)
{
struct arg_struct args;
args.arg1 = file;
args.arg2 = word;
args.arg3 = repl;
if(pthread_create(&thread_id[i],NULL,&do_process,&args) != 0)
{
i--;
fprintf(stderr,RED "\nError in creating thread\n" NONE);
}
}
for(i = 0 ; i < max_thread; i++)
if(pthread_join(thread_id[i],NULL) != 0)
{
fprintf(stderr,RED "\nError in joining thread\n" NONE);
}
int do_process(void *arguments)
{
//code missing
}
*如何将 (void *)do_process 转换为 (int) do_process ?*
该函数返回非常重要的信息,没有这些返回我不知道如何阅读回复
我收到以下错误:警告:传递 `pthread_create' 的 arg 3 使指针从整数而不进行强制转换
【问题讨论】:
-
我认为至少显示
do_process的声明 是可能的吗?但除此之外,是否有某些原因您不能将arg_result放入您的args结构中并用它传达您的返回结果? -
将返回值放入
args,并返回。您可以在返回时询问args...使用pthread_join中的第二个参数。 -
我认为这是个好主意。 pthread_join 中的第二个参数是什么?我将值设置为 NULL。