当前位置: 技术问答>linux和unix
关于Select()函数。
来源: 互联网 发布时间:2014-12-17
本文导语: int z; fd_set wk_set; FD_SET(z,&wk_set); int n=select(mx,&wk_set,NULL,NULL,NULL); if(FD_ISSET(s,&wk_set)) { ... } select()会对wk_set操作吗?比如对有请求事件的socket位置位,对没有请求事件的socket清零,或者其它操作,还是简单地只是返...
int z;
fd_set wk_set;
FD_SET(z,&wk_set);
int n=select(mx,&wk_set,NULL,NULL,NULL);
if(FD_ISSET(s,&wk_set))
{
...
}
select()会对wk_set操作吗?比如对有请求事件的socket位置位,对没有请求事件的socket清零,或者其它操作,还是简单地只是返回有请求事件的socket个数。
如果没有这些操作的话我们怎么判断哪个socket有请求事件呢。
fd_set wk_set;
FD_SET(z,&wk_set);
int n=select(mx,&wk_set,NULL,NULL,NULL);
if(FD_ISSET(s,&wk_set))
{
...
}
select()会对wk_set操作吗?比如对有请求事件的socket位置位,对没有请求事件的socket清零,或者其它操作,还是简单地只是返回有请求事件的socket个数。
如果没有这些操作的话我们怎么判断哪个socket有请求事件呢。
|
1。会修改wk_set,只保留有数据对应的位
2。
阻塞等待(将socket设置成阻塞的,或者调用send recv加上阻塞标志)
周期查询(将socket设置成非阻塞的,或者调用send recv加上非阻塞标志)[极耗cpu资源]
2。
阻塞等待(将socket设置成阻塞的,或者调用send recv加上阻塞标志)
周期查询(将socket设置成非阻塞的,或者调用send recv加上非阻塞标志)[极耗cpu资源]
|
poll的功能类似select,只是接口不一样
他使用一个pollfd结构,具体参考man poll
他使用一个pollfd结构,具体参考man poll