なんらかの理由でpthread_create
は、struct
を引数として渡すことを許可していません。問題はシステムに関連していませんが、他の誰かの箱でテストする機会はありませんでした。何らかの理由でstruct
を渡すことはできません。エラー#12を返します。なぜpthread_create()は12を返しますか?
メモリに問題がありません。私は12がENOMEMであることを知っています、そして、 "それはそうすべき"ですが、そうではありません。単純に私の構造体をポインタとして受け入れないでしょう。私はGDBにこのコードを実行したとき
struct mystruct info;
info.website = website;
info.file = file;
info.type = type;
info.timez = timez;
for(threadid = 0; threadid < thread_c; threadid++)
{
// printf("Creating #%ld..\n", threadid);
retcode = pthread_create(&threads[threadid], NULL, getstuff, (void *) &info);
//void * getstuff(void *threadid);
は、何らかの理由で、それはコード12が返されませんでした..しかし、私は、コマンドラインから実行するとき、それは12
任意のアイデアを返しますか? Linux上
スレッドルーチン 'getstuff()'への引数は、その引数が 'threadid'であるというあなたのコメントにもかかわらず、スレッドIDではない '&info'へのポインタです。あなたはおそらくこれを認識していますが、二重のチェックだけです。 –
'info'のアドレスの代わりにヌルポインタを渡したとします。 'info'をグローバル変数にすることができます。というのも、スレッドはすべて同じ情報を使用するからです。スレッドのどれでも変更しないでください。あなたはまだメモリの問題にぶつかっていますか?任意のファイルまたは共有メモリセグメントを任意の場所にマップしましたか?あなたは32ビットまたは64ビットプラットフォーム(コンパイル)で作業していますか? 'pthread_create()'の第2引数のスレッド属性をいくつか作成しようとしましたか? –