我在创建线程池时遇到问题。我不断得到警告:
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 ");
}
}
答案 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 *