エラーはかなり明確です。最初の引数は、整数ではなくポインターにする必要があります。
男 pthread:
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
The pthread_create() function shall create a new thread, with
attributes specified by attr, within a process. If attr is NULL, the
default attributes shall be used. If the attributes specified by attr
are modified later, the thread's attributes shall not be affected. Upon
successful completion, pthread_create() shall store the ID of the cre-
ated thread in the location referenced by thread.
id
pthread_create 呼び出しの前にアンパサンドを付ける前に、最後の文を読み直してください。id
EDIT2: pthread_t としても定義する必要があります。
編集:
実際には、同じ行に他にも 2 つの問題があります: start_routine は 2 つではなく 1 つの引数を取る関数である必要がありますが、呼び出し元と同じ関数を渡すため、最悪の場合、これはフォーク爆弾になります!