c - pthread_create int instead of void -


i have following code:

for(i = 0 ; < 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 ; < 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 } 

*how can transform (void *)do_process (int) do_process ?*

that function returns important info , without returns don't know how read replies

i following error: warning: passing arg 3 of `pthread_create' makes pointer integer without cast

the thread function returns pointer. @ minimum, can allocate integer dynamically , return it.

void * do_process (void *arg) {     /* ... */     int *result = malloc(sizeof(int));     *result = the_result_code;     return result; } 

then, can recover pointer thread_join() call;

    void *join_result;     if(pthread_join(thread_id[i],&join_result) != 0)     {         fprintf(stderr,red "\nerror in joining thread\n" none);     } else {         int result = *(int *)join_result;         free(join_result);         /* ... */     } 

Comments

Popular posts from this blog

java - Run a .jar on Heroku -

java - Jtable duplicate Rows -

validation - How to pass paramaters like unix into windows batch file -