スレッドの作成中にエラーが発生しました。警告:互換性のないポインタ型から「pthread_create」の引数3を渡します

フランシスコ・マーティンズ・フェレイラ

スレッドのプールを作成するのに問題があります。私は継続的に警告を受け取ります:

warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type

質問を検索しましたが、どれも問題を解決していません。これが私がスレッドを作成するために使用しているコードです

for(j=2;j<THREADNUMBER+2;j++){
    id[j] = j;
    if(pthread_create(&thread_array[j],NULL,requestHandler,(void*)id[j])!=0){
        perror("Error creating thread ");
    }
}
e0k

マニュアルページから

#include <pthread.h>

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                      void *(*start_routine) (void *), void *arg);

コンパイルして-pthreadでリンクします。

3番目の引数は、を返し、型の1つの引数void *取る関数へのポインタです。型のジェネリックポインタ値(つまりメモリアドレス)だけを引数として使用し、型を返すことで、(少なくとも間接的に)引数として何かを受け入れ、結果として何かのアドレスを返すことができる関数です。これにより、かなり一般的な関数になりますが、関数のシグネチャは固定されています。void *void *

関数requestHandler()がこの署名と一致していないようです。requestHandler()タイプの引数を1つだけ受け入れvoid *、を返すことを確認してくださいvoid *次のようになります。

void *requestHandler(void *arg) {
    ...
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ