select 和 epoll 区别
来源:互联网 发布:python怎么下载库 编辑:程序博客网 时间:2024/05/05 17:03
select 和 epol 都是用来监听套接字上是否有事情发生,
select 采用轮询方式,epoll 是触发方式,用回调把信息赋给event机构体
select : 轮询检查文件描述符集合, 实现方式:
fd_set fdRead;
FD_ZERO(&fdRead); // 将文件描述符集合清零
FD_SET(iSocket,&fdRead); // 将文件描述符iSocket添加到fdRead中,可以添加多个
// select ,设置recv 超时时间
int iRet = select(iSocket+1,&fdRead,NULL,NULL,&tvTimeOUt);
swtich(iRet)
{
case 0:
printf("Time out\n");
return -1;
case -1:
printf("Select Error\n");
return -2;
default:
if(FD_ISSET(iSocket,&fdRead)) // 测试iSocket 是否在描述符集合中
{
iRecvLen = recv(iScoket,pcRecvBuf,iBufLen,0);
if(iRcvLen == -1)
{
printf("Recv error\n");
return -3;
}
else if( 0 == iRevLen)
{
printf("Scoket close\n");
return -4;
}
else{
break;
}
}
如果文件描述符中有多个socket,便会轮询检查
epoll:
epool 的使用,首先通过epoll_create创建一个epoll对象,得到一个epoll的描述符,
我们需要监听那个fd上的事件通过epoll_ctl,最后epoll_wait会返回发生了事件的数目
}
}
如果文件描述符中有多个
socket
,便会轮询检查。
}
- epoll和select区别
- select 和 epoll区别
- epoll和select区别
- select 和 epoll区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- select 和 epoll 区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- epoll和select区别
- select 和 epoll区别
- epoll和select区别
- epoll和select区别
- 生活感悟之一
- PHP基础-数组排序Sort()、Rsort()、Asort()、Ksort()、Arsort()、Krsort()
- poj 1837 天平平衡问题
- Combinations
- Jsp和Servlet中的路径问题
- select 和 epoll 区别
- [Android]教你如何获取未安装应用的ResolveInfo(不适用于Android 5.0因为内部实现已经变化)
- Windows应用程序调试-符号文件
- Python3.x和Python2.x的区别
- JAVA 列表排序
- linux mac80211
- 插入排序算法
- JAVA泛型和通配符
- 迪杰斯特拉算法 最短路径模板题 hdu 2544