Cで、私たちはそうのようなスレッドを作成:なぜC言語のスレッドで関数の戻り値の型が(void *)である必要がありますか?
void * run(void * arg){
printf("hello world\n");
}
int main(){
pthread_t thread;
int a = pthread_create(&thread, NULL, run, (void*)0);
}
をしかし、私はパラメータで(void *)
にキャストした場合、私は、一方
void run(){}
として実行宣言すると、それは動作しません。 pthread_create
の場合、正常に動作します。したがって、戻り値の型が(void *)
の関数のみを受け入れます。
なぜですか?
ありがとうございます!私のシステムで
したがって、 'start_routine'の返された(void)ポインタは、' pthread_join'呼び出しの後に、必要に応じてルーチンから返される単純な戻り値を指しますか? – ysap
...それは基本的にスレッドからメインプロセスに値を返すことができますか? – ysap