专栏名称: Java之道
有道无术,术可成;有术无道,止于道;「Java之道」致力于为广大Javaer传道授业解惑。以术识道,以道御术;
今天看啥  ›  专栏  ›  Java之道

你管这破玩意叫 IO 多路复用?

Java之道  · 公众号  ·  · 2021-04-03 10:00
为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势。为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可。Let's go阻塞 IO服务端为了处理客户端的连接和请求的数据,写了如下代码。listenfd = socket();   // 打开一个网络通信端口bind(listenfd);        // 绑定listen(listenfd);      // 监听while(1) {  connfd = accept(listenfd);  // 阻塞建立连接  int n = read(connfd, buf);  // 阻塞读数据  doSomeThing(buf);  // 利用读到的数据做些什么  close(connfd);     // 关闭连接,循环等待下一个连接}这段代码会执行得磕磕绊绊,就像这样。可以看到,服务端的线程阻塞在了两个地方,一个是 accept 函数 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照