相较于select模型
1、poll模型已经没有了文件描述的限制,理论上可以无限大
2、poll模型的输入输出型参数不再是同一个,它的输入输出参数分离,并且不需要更新
poll模型的优点:解决了select的两个缺点,它比多线程多进程占用的资源少,性能好
缺点:但是在poll一次监视的文件描述的个数过多时,它有可能来不及处理,它在后期也需要遍历,性能会随着用户的增多而性能下降
include<stdio.h>
#include<poll.h>
#include <unistd.h>
int main()
{
struct pollfd poll_set[2];
poll_set[0].fd=0;
poll_set[0].events=POLLIN;
int timeout=5000;
char buf[1024];
while(1)
{
switch(poll_set,2,timeout)
{
case -1:
perror("poll");
exit(1);
break;
case 0:
printf("timeout\n");
break;
default:
{
ssize_t s=read(0,buf,sizeof(buf)-1);
if(s>0)
{
buf[s-1]=0;
printf("%s\n",buf);
}
}
}
}
return 0;
}