文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>异步I/O

异步I/O

时间:2006-05-31  来源:chouqiu

  1. 文件(设备)打开时默认会清除FASYNC标志, 当用户通过fcntl函数的F_SETFL指令设置了FASYNC标志后, 设备驱动的fasync函数就会被调用;
  2. 当一个文件(设备)数据到达后, 系统会向所有注册了该文件(设备)异步I/O的进程发送SIGIO信号. 而当一个进程向多个文件(设备)注册了异步I/O时, 在收到SIGIO信号后还要通过poll或select判断是哪个文件(设备)有数据;
  3. 异步I/O通常只对socket和tty有效;
  4. 驱动中的fasync函数借助系统提供的struct fasync_struct结构和fasync_helper, kill_fasync来完成异步I/O的功能. 在驱动的release函数中还要调用fasync函数做下清理;
             static int scull_fasync(int fd, struct file *filp, int mode)
             {
                struct scull_dev *dev = filp->private_data;
                return fasync_helper(fd, filp, mode, &dev->async_queue);
             }
          in write():
             if(dev->async_queue)
                kill_fasync(&dev->async_queue, SIGIO, POLL_IN);
          or in read():
             if(dev->async_queue)
                kill_fasync(&dev->async_queue, SIGIO, POLL_OUT);
          in release():
             scull_p_fasync(-1, filp, 0);
相关阅读 更多 +
排行榜 更多 +
狂热战车

狂热战车

飞行射击 下载
士兵和小鸡

士兵和小鸡

飞行射击 下载
西部枪射击目标

西部枪射击目标

飞行射击 下载