Не уверен, отвечает ли это на ваш вопрос (или каков был ваш вопрос), но вот код, который компилируется и дает то, что вы могли бы ожидать для вывода:
#include <windows.h>
#include <stdio.h>
#include <pthread.h>
int main() {
pthread_t f2_thread, f1_thread;
void *f2(void*), *f1(void*);
int i1,i2;
i1 = 1;
i2 = 2;
pthread_create(&f1_thread,NULL,f1,&i1);
pthread_create(&f2_thread,NULL,f2,&i2);
pthread_join(f1_thread,NULL);
pthread_join(f2_thread,NULL);
return 0;
}
void *f1(void *x){
int* data = static_cast<int*>(x);
int i = *data;
Sleep(1);
printf("f1: %d",i);
pthread_exit(0);
return 0;
}
void *f2(void *x){
int* data = static_cast<int*>(x);
int i = *data;
Sleep(1);
printf("f2: %d",i);
pthread_exit(0);
return 0;
}
So
- Имея void * аргументы в прототипах, затем приводя их к int *
- возвращение каждой функции 0