Passing Arguments into the Thread Function
Hello,
I try to write a simple program for creating threads in C++. If I don't have arguments in the Thread Function, it works fine. The problem arises when I try to pass an argument to this function. I have found various code examples, but they all cause compile errors. More specifically, the part of my code concerning the thread creation is the following: #include <pthread.h> struct two_args { int arg1; int arg2; }; void *needs_2_args(void *); void a() { pthread_t t; struct two_args *ap; ap = (struct two_args *) malloc(sizeof (struct two_args)); ap->arg1 = 1; ap->arg2 = 2; error = pthread_create(&t, NULL, needs_2_args, (void *) ap); if (error != 0) deal_with_error (); } void * needs_2_args(void *ap) { struct two_args *argp = (void *) ap; int a1, a2; a1 = argp->arg1; a2 = argp->arg2; free(argp); } While compiling, I get the following error: In function void* needs_2_args(void*) invalid conversion from 'void*' to 'two_args*' Similar compile response appears, even if I use a simple argument (e.g. int) and not a struct. As I said before, I have used many code examples from the internet, but they are all similar and I get the same output. The compiling part of my Makefile is the following: g++ -c -o $(LIB_DIR)/Test.o -l $(INC_LIB) $(SRC_DIR)/Test.cpp Do I forget an option? I am using also -lpthread but in the linking part. Should I use it also in the compiling part? If yes, in which place? Please note that I don't have any experience in Linux Programming. Thanks in advance, George |
Re: Passing Arguments into the Thread Function
Code:
void * |
Thanks a lot Mara, it is working now.
|
All times are GMT -5. The time now is 09:29 PM. |