【发布时间】:2019-01-22 02:49:57
【问题描述】:
我正在尝试使用线程池并使用 select 来实现多线程服务器,因此我在全局范围内声明了 fd_set set,并将其传递给线程池运行的函数。我收到此错误
在函数“threadF”中请求转换为非标量类型 fd_set set1=(fd_set) s;
代码是这样的
pool *createPool(int size){
/*...*/
if((err=pthread_create(&id,NULL,&threadF,(void *)&set))!=0){
fprintf(stderr,"thread\n");
exit(errno);
}
/*...*/
}
void *threadF(void* s){
fd_set set1=(fd_set) s;
/*...*/
}
也许我忘记了什么?
【问题讨论】:
-
@Lundin 通常是一个结构体。
-
这是选择 man7.org/linux/man-pages/man2/select.2.html 我没有声明任何 fd_set 结构但使用了已经预定义的结构
-
你必须在某处声明
set。无论如何,我很确定原因如发布的答案中所述。 -
显示类型声明。
-
简单地将
fd_set set, rdset;声明为全局变量
标签: c multithreading select server threadpool