pthread スレッド関数は、常に 1 つのvoid *
引数を取り、値を返しvoid *
ます。2 つの引数を渡したい場合は、それらをstruct
- で囲む必要があります。次に例を示します。
struct thread_args {
int a;
int b;
};
void *function(void *);
struct thread_args *args = malloc(sizeof *args);
if (args != NULL)
{
args->a = 0;
args->b = 1;
pthread_create(&threadId, &attr, &function, args);
}
スレッド関数自体の場合:
void *function(void *argp)
{
struct thread_args *args = argp;
int c = args->a;
int d = args->b;
free(args);
/* ... */
malloc()
andを使用する必要はありませんが、呼び出されたスレッドが終了するまで、free()
元のスレッドがスレッド引数の割り当てを解除したり再利用したりしないようにする必要があります。struct