文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
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);
相关阅读 更多 +
排行榜 更多 +
单挑幸存者安卓版

单挑幸存者安卓版

飞行射击 下载
决战战地指挥官

决战战地指挥官

飞行射击 下载
鸡仔幸存者最新版

鸡仔幸存者最新版

飞行射击 下载