
block_poll_select
文章平均质量分 79
lamdoc
这个作者很懒,什么都没留下…
展开
-
8_3_select函数的使用
Iinux中select函数的使用阻塞式I/O编程有两个特点: 一、如果一个发现I\O有输入,读取的过程中,另外一个也有了输入,这时候不会产生任何反应,也就是需要你的程序语句去select的时候才知道有数据输入。 二、程序去select的时候,如果没有数据输入,程序会一直等待,直到有数据位置,也就是程序中无需循环和sleep。 Select在Socket编程中还原创 2012-06-22 14:07:55 · 149 阅读 · 0 评论 -
8_4_poll
linux poll用法int main(void){ struct pollfd fds[2]; int ret; int i = 0; fds[0].fd = STDIN_FILENO; fds[0].events = POLLIN; fds[1].fd = STDOUT_FIL原创 2012-06-22 14:08:50 · 192 阅读 · 0 评论 -
用户空间轮询poll
poll()系统调用是System V的多元I/O解决方案,它解决了select()的几个不足。用户空间调用的poll函数定义如下:#include int poll (struct pollfd *fds, unsigned int nfds, int timeout);和select()不一样,poll()没有使用低效的三个基于位的文件描述符set,而是采用了一个单独的结构体po原创 2013-02-21 13:45:52 · 336 阅读 · 0 评论 -
用户空间的轮询select
select 函数原型定义如下: int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);其中,readfds, writefds, exceptfds,分别是被select()函数轮询监视的读、写和异常处理的文件描述符集合。numfds原创 2013-02-21 13:13:44 · 435 阅读 · 0 评论 -
设备驱动中的poll
设备驱动中的轮询编程unsigned int(*poll)(struct file *filp, struct poll_table *wait);第一个参数为文件指针,第二个参数为轮询表指针,原型定义如下:poll()函数主要进行2项工作:a. 对可能引起设备文件状态变化的等待队列, 调用poll_wait()函数,将对应的等待队列头添加到poll_table.b原创 2012-06-22 14:06:09 · 431 阅读 · 0 评论 -
阻塞_睡眠_等待队列_唤醒机制
阻塞就是睡眠,可以通过等待队列方式实现,唤醒跟睡眠是反向关系。1. 阻塞概念:阻塞操作:指执行设备操作时若不能获得资源,则挂起(即休眠),直到满足可操作的条件后再进行操作。可以提高CPU 的工作效率。Applications typically expect to block, when a request cannot satisfied immediately.So原创 2012-06-22 14:04:58 · 801 阅读 · 0 评论 -
fd_set
select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set;FD_ZERO(&set); FD_SET(fd,&set); FD_CLR(fd,&set); FD_ISSET(fd,&s原创 2013-02-21 10:39:19 · 313 阅读 · 0 评论