アプリ版:「スタンプのみでお礼する」機能のリリースについて

スレッドを作成する際に、
属性としてPTHREAD_CREATE_DETACHEDを指定したいのですが、
その際pthread_attr_tをどのように設定したらよいかわかりません。
現在書いているコードは

pthread pt;
pthread_attr_t* attr;
pthread_attr_init(attr);
pthread_attr_setdetachstate(attr,PTHREAD_CREATE_DETACHED);

if (pthread_create(&pt,attr,NULL,NULL) != 0){
perror("thread_create()");
exit(1);
}


上記のようなものです。(スレッド作成部分のattr以外の
引数は適当です)
これでコンパイルすると

警告: 変数 attr には値が代入されていません.

と、警告が出てしまいます。
これを解消するにはどう修正したらよいのでしょうか?

A 回答 (2件)

以下のようにしてください。


---------------------------
pthread pt;
pthread_attr_t attr; // *をとる
pthread_attr_init(&attr); // &を付加
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); // &を付加

if (pthread_create(&pt,&attr,NULL,NULL) != 0){ //&を付加
perror("thread_create()");
exit(1);
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事解決しました。

お礼日時:2005/06/10 09:20

とりあえず


> pthread_attr_t* attr;
> pthread_attr_init(attr);

< pthread_attr_t attr;
< pthread_attr_init(&attr);
ですね。後の行も対応するように変更します。

pthread_attr_initは引数で指定した領域に書込みしますので割当て済みの領域を渡さなければいけません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
理由まで教えていただき、よくわかりました。

答えていただいたお二方に
20ptずつ入れたいところですが、、
タッチの差ということでrinkun様には
10pt入れさせていただきます。

お礼日時:2005/06/10 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!