创建线程时出错。警告:从不兼容的指针类型传递'pthread_create'的参数3

时间:2016-12-10 02:26:22

标签: c multithreading pthreads

我在创建线程池时遇到问题。我不断得到警告:

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 ");
    }
}

1 个答案:

答案 0 :(得分:0)

来自man pages

@RequestMapping(value = "/someUrl")
public firstReturnType someMethod(@RequestParam("param") int param ) {
    if(param == 1){
        ...
    }
    else if(param == 2){
        ...
    }
} 
     

编译并链接-pthread。

第三个参数是一个指向函数的指针,该函数返回#include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 并且接受类型为void *一个参数。通过仅使用类型void *的通用指针值(即内存地址)作为参数和返回类型,它是一个可以(至少间接地)接受任何事物作为参数的函数,并返回任何地址结果是。这使它成为一个相当普遍的功能,但仍然具有固定的功能签名。

您的功能void *似乎与此签名不符。确保您的requestHandler()只接受requestHandler()类型的一个参数并返回void *。它应该看起来像:

void *