我试图将一个结构作为参数传递给 pthread_create 并且似乎得到了一些奇怪的结果。
该结构有两个成员,第一个是 int,第二个是函数指针:
typedef struct
{
int num;
void (*func)(int);
} foo_t;
我试图在结构中使用的函数:
void myfunc(int mynum)
{
printf("mynum: %d\n", mynum);
}
这是我将传递给我的线程的结构的声明:
foo_t f;
f.num = 42;
f.func = &myfunc;
对 pthread_create 的调用:
pthread_create(&mythread, NULL, mythreadfunc, &f);
最后,我的线程函数:
void mythreadfunc(void *foo)
{
foo_t f = *(foo_t *)foo;
printf("num: %d\n", f.num); // Prints: num: 32776 (undefined?)
(*f.func)(f.num); // Segfaults (again, undefined?)
...
似乎 mythreadfunc 中的强制转换似乎不起作用,我不知道为什么。有什么建议么?谢谢。