Bah, formatting got screwed up again. Here's another attempt.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
typedef struct
{
void (*function)(int,int);
int argA;
int argB;
} threadargs_t;
pthread_t threadA, threadB;
void dosomething(int a, int b)
{
printf("this is something: %d %d\n",a,b);
}
void dosomethingelse(int a, int b)
{
printf("this is something else: %d %d\n",a,b);
}
void* thread_entry(void* args)
{
threadargs_t* threadargs = (threadargs_t*)args;
(*threadargs->function)(threadargs->argA,threadargs->argB);
free(threadargs);
return NULL;
}
int main(int argc, char** argv)
{
int localA = 0, localB = 1, localC = 2, localD = 3;
threadargs_t* threadA_args = malloc(sizeof(threadargs_t));
threadargs_t* threadB_args = malloc(sizeof(threadargs_t));
threadA_args->function = &dosomething;
threadA_args->argA = localA;
threadA_args->argB = localB;
threadB_args->function = &dosomethingelse;
threadB_args->argA = localC;
threadB_args->argB = localD;
pthread_create(&threadA,0,&thread_entry,threadA_args);
pthread_create(&threadB,0,&thread_entry,threadB_args);
fgetc(stdin);
return 0;
}