私は自分のスレッドへのポインタを持つこのvoid関数を持っています。コンパイルしようとすると、「コントロールが非 void 関数の終わりに達しました」という警告が表示されます。私が行った場合
void mythread (void *arg)
関数 i は、コンパイラが与える警告を解決しますが、次のような新しい警告が表示されます。
TA.c:50:2: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default]
それで、return 0;
「mythread」関数の最後に入れ、コンパイルします。しかし、これが正しいことかどうかはわかりませんか?
POSIX システム サービス プログラミングを学ぼうとしています。どうすればよいかわかりません。
アドバイス?キャスト引数 3 を入力してみる必要がありますか? プログラムをコンパイルして、警告をゼロにするにはどうすればよいですか?
#include <limits.h>
#include <pthread.h>
#include <stdio.h>
void *mythread (void *arg)
{
printf("This my Thread Maybe...\n");
}
int main()
{
pthread_t mythread_id;
pthread_attr_t mythread_attr;
size_t stack_size;
int detachstate;
pthread_attr_init (&mythread_attr);
pthread_attr_getdetachstate(&mythread_attr, &detachstate);
if(detachstate == PTHREAD_CREATE_DETACHED)
{
printf("Current Deteached state is Detached\n");
}
else
{
printf("Current Detached state is Joinable\n");
}
pthread_attr_setdetachstate (&mythread_attr, PTHREAD_CREATE_DETACHED);
pthread_attr_getdetachstate (&mythread_attr, &detachstate);
if(detachstate == PTHREAD_CREATE_DETACHED)
{
printf("NEW DETACHED STATE is determined to be deteched\n");
}
else
{
printf("NEW DETACHED STATE is Determine to be Joinable\n");
}
pthread_attr_getstacksize (&mythread_attr, &stack_size);
printf ("Default stack size is %d; minimum is %d\n", stack_size, PTHREAD_STACK_MIN);
pthread_attr_setstacksize (&mythread_attr, PTHREAD_STACK_MIN*2);
pthread_attr_getstacksize (&mythread_attr, &stack_size);
printf("NEW stack size is %d\n", stack_size);
pthread_create (&mythread_id, &mythread_attr, mythread, 0);
return 0;
}