#include <stdio.h>
int ret;
void *(myf) (void *arg)
{
int *my_arg_L = (int *)arg;
printf("myf arg: %p\n", arg);
printf("my_arg_L: %d, %d\n", my_arg_L[0], my_arg_L[1]);
ret = 99;
return &ret;
}
int create(void *(*start_routine) (void *), void *arg)
{
printf("arg: %p\n", arg);
start_routine(arg);
return 0;
}
int main(int argc, char *argv[])
{
int p=2, q=100;
int arg_L[2] = { p, q-1 };
printf("arg_L: %p\n", arg_L);
int r = create(myf, (void *)arg_L);
printf("r: %d\n", r);
return 0;
}
模擬的程式行為, 讓你參考看看。
※ 引述《skyHuan (Huan)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: pthread
: 問題(Question):
: 最近在做多執行緒的實作遇到兩個問題
: 1.
: 因為pthread_create要呼叫的函式需要的參數是用指標宣告
: 所以函式的參數宣告成(void *)
: 我用一個args array傳入參數
: 那這個參數在函式中該怎麼取用呢
: 我寫的直接用arg[0], arg[1]應該是錯的
: compiler會有dereferencing "void *" pointer的warning