(1)实现非阻塞I/O
(2)为了分离内核的I/O排队,I/O请求提交,在操作完成时收到通知。
第一点是基于性能的考虑。如果I/O操作永远不会阻塞,就不会出现I/O超负荷的情况,进程也不必被I/O所束缚。第二点是基于过程的考虑,只是另一种处理I/O的方式。
达到这些目的最常用的方式是线程。这种方法需要完成下列任务:
1.创建一个线程池来处理所有的I/O。
2.实现将I/O操作加入工作队列的一系列函数。
3.是这些函数返回唯一的I/O描述符,来区分相关的I/O操作。每个工作线程响应队列首的I/O请求,提交到内核,等待它们完成。
4.完成后,把操作的结果(返回至,错误码,所有读取的数据)加入到一个结果队列中。
5.实现一系列从结果队列中获取状态信息的函数,使用最初返回的I/O描述符区分每个操作。
阅读(1288) | 评论(0) | 转发(0) |