epoll是同步还是异步的-这是不是一个好问题?
程序员文章站
2022-06-19 09:25:59
...
POSIX defines these two terms as follows:
· A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes.
· An asynchronous I/O operation does not cause the requesting process to be blocked.
Using these definitions,
the first four I/O models—blocking, nonblocking, I/O multiplexing, and signal-driven I/O—are all synchronous because
the actual I/O operation (recvfrom) blocks the process. Only the asynchronous I/O model matches the asynchronous
I/O definition.
<UNIX网络编程>> 第三版 6.2节
这段是关于IO同步异步的描述,书中说到:
一个同步的IO操作使得请求进程一直被阻塞,直到IO操作完成;
一个异步的IO操作不会导致请求进程被阻塞.
说说关于腾讯面试官问的epoll到底是同步的还是异步的?
其实我认为问epoll是同步和异步的,这个问题不是非常好,因为在epoll模型中,涉及到同步异步概念的
有两处:IO和消息,
而这两处恰好是不一样的,这也导致了陈硕和腾讯面试官的观点相左。根据UNIX网络编程中的定义,epoll
中的IO是同步的,但是它的消息是异步的.~~~不晓得我理解的对不对..