構造体をパラメーターとして pthread_create に渡そうとしていますが、奇妙な結果が得られているようです。
構造体には 2 つのメンバーがあり、最初のメンバーは int で、2 番目のメンバーは関数ポインターです。
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 内のキャストが機能していないようで、その理由がわかりません。助言がありますか?ありがとう。