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
|