jam*_*mes 0 c select multithreading threadpool server
我正在尝试使用线程池并使用选择来实现多线程服务器,因此我已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;
/*...*/
}
Run Code Online (Sandbox Code Playgroud)
也许我忘记了什么?
标量类型是算术类型(常规变量)和指针的正式名称。相反的是聚合类型,即数组和结构。编译器认为您正在从标量转换s为其他内容。通俗地说:不要从指针转换为结构体实例。
标量s是一个指针,但您将其转换为结构类型,而不是指向结构的指针(这是您传递给 pthread_create 的内容)。尝试:
fd_set* set1 = (fd_set*)s;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4805 次 |
| 最近记录: |