スレッドのプールを作成するのに問題があります。私は継続的に警告を受け取ります:
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 ");
}
}
マニュアルページから:
#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]
コメントを追加